aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy T. Bouse <jbouse@debian.org>2009-11-27 16:20:09 -0500
committerJeremy T. Bouse <jbouse@debian.org>2009-11-27 16:20:09 -0500
commit176c6caf4ea7918e1698438634b237fab8456471 (patch)
tree6e2a8e5be1af2a6ec324fdbf99589aa099f1ec2a
downloadpython-paramiko-176c6caf4ea7918e1698438634b237fab8456471.tar
python-paramiko-176c6caf4ea7918e1698438634b237fab8456471.tar.gz
Imported Upstream version 1.5.2upstream/1.5.2
-rw-r--r--LICENSE504
-rw-r--r--PKG-INFO25
-rw-r--r--README248
-rw-r--r--demo.py210
-rw-r--r--demo_server.py138
-rw-r--r--demo_simple.py128
-rw-r--r--docs/epydoc.css100
-rw-r--r--docs/index.html13
-rw-r--r--docs/private/__builtin__.object-class.html286
-rw-r--r--docs/private/__builtin__.type-class.html504
-rw-r--r--docs/private/epydoc.css100
-rw-r--r--docs/private/exceptions.Exception-class.html87
-rw-r--r--docs/private/frames.html13
-rw-r--r--docs/private/help.html224
-rw-r--r--docs/private/index.html13
-rw-r--r--docs/private/indices.html1635
-rw-r--r--docs/private/paramiko-module.html407
-rw-r--r--docs/private/paramiko.Agent-class.html155
-rw-r--r--docs/private/paramiko.AgentKey-class.html319
-rw-r--r--docs/private/paramiko.AuthHandler-class.html282
-rw-r--r--docs/private/paramiko.BadAuthenticationType-class.html141
-rw-r--r--docs/private/paramiko.BaseSFTP-class.html149
-rw-r--r--docs/private/paramiko.BufferedFile-class.html656
-rw-r--r--docs/private/paramiko.Channel-class.html1329
-rw-r--r--docs/private/paramiko.ChannelFile-class.html347
-rw-r--r--docs/private/paramiko.DSSKey-class.html486
-rw-r--r--docs/private/paramiko.Message-class.html654
-rw-r--r--docs/private/paramiko.PKey-class.html696
-rw-r--r--docs/private/paramiko.Packetizer-class.html441
-rw-r--r--docs/private/paramiko.PasswordRequiredException-class.html91
-rw-r--r--docs/private/paramiko.RSAKey-class.html504
-rw-r--r--docs/private/paramiko.SFTP-class.html347
-rw-r--r--docs/private/paramiko.SFTPAttributes-class.html385
-rw-r--r--docs/private/paramiko.SFTPClient-class.html1091
-rw-r--r--docs/private/paramiko.SFTPError-class.html85
-rw-r--r--docs/private/paramiko.SFTPFile-class.html667
-rw-r--r--docs/private/paramiko.SFTPHandle-class.html364
-rw-r--r--docs/private/paramiko.SFTPServer-class.html511
-rw-r--r--docs/private/paramiko.SFTPServerInterface-class.html744
-rw-r--r--docs/private/paramiko.SSHException-class.html95
-rw-r--r--docs/private/paramiko.SecurityOptions-class.html373
-rw-r--r--docs/private/paramiko.ServerInterface-class.html894
-rw-r--r--docs/private/paramiko.SubsystemHandler-class.html352
-rw-r--r--docs/private/paramiko.Transport-class.html2151
-rw-r--r--docs/private/paramiko.agent-module.html164
-rw-r--r--docs/private/paramiko.auth_handler-module.html62
-rw-r--r--docs/private/paramiko.ber-module.html79
-rw-r--r--docs/private/paramiko.ber.BER-class.html145
-rw-r--r--docs/private/paramiko.ber.BERException-class.html86
-rw-r--r--docs/private/paramiko.channel-module.html71
-rw-r--r--docs/private/paramiko.channel.ChannelStderrFile-class.html282
-rw-r--r--docs/private/paramiko.common-module.html1013
-rw-r--r--docs/private/paramiko.compress-module.html74
-rw-r--r--docs/private/paramiko.compress.ZlibCompressor-class.html122
-rw-r--r--docs/private/paramiko.compress.ZlibDecompressor-class.html122
-rw-r--r--docs/private/paramiko.dsskey-module.html62
-rw-r--r--docs/private/paramiko.file-module.html230
-rw-r--r--docs/private/paramiko.kex_gex-module.html179
-rw-r--r--docs/private/paramiko.kex_gex.KexGex-class.html250
-rw-r--r--docs/private/paramiko.kex_group1-module.html181
-rw-r--r--docs/private/paramiko.kex_group1.KexGroup1-class.html176
-rw-r--r--docs/private/paramiko.logging22-module.html235
-rw-r--r--docs/private/paramiko.logging22.Formatter-class.html120
-rw-r--r--docs/private/paramiko.logging22.StreamHandler-class.html123
-rw-r--r--docs/private/paramiko.logging22.logger-class.html135
-rw-r--r--docs/private/paramiko.message-module.html61
-rw-r--r--docs/private/paramiko.packet-module.html71
-rw-r--r--docs/private/paramiko.packet.NeedRekeyException-class.html86
-rw-r--r--docs/private/paramiko.pipe-module.html87
-rw-r--r--docs/private/paramiko.pipe.PosixPipe-class.html133
-rw-r--r--docs/private/paramiko.pipe.WindowsPipe-class.html137
-rw-r--r--docs/private/paramiko.pkey-module.html61
-rw-r--r--docs/private/paramiko.primes-module.html117
-rw-r--r--docs/private/paramiko.primes.ModulusPack-class.html158
-rw-r--r--docs/private/paramiko.rsakey-module.html62
-rw-r--r--docs/private/paramiko.server-module.html74
-rw-r--r--docs/private/paramiko.server.InteractiveQuery-class.html195
-rw-r--r--docs/private/paramiko.sftp-module.html1082
-rw-r--r--docs/private/paramiko.sftp_attr-module.html59
-rw-r--r--docs/private/paramiko.sftp_client-module.html89
-rw-r--r--docs/private/paramiko.sftp_file-module.html62
-rw-r--r--docs/private/paramiko.sftp_handle-module.html61
-rw-r--r--docs/private/paramiko.sftp_server-module.html102
-rw-r--r--docs/private/paramiko.sftp_si-module.html63
-rw-r--r--docs/private/paramiko.ssh_exception-module.html72
-rw-r--r--docs/private/paramiko.ssh_exception.PartialAuthentication-class.html131
-rw-r--r--docs/private/paramiko.transport-module.html111
-rw-r--r--docs/private/paramiko.util-module.html475
-rw-r--r--docs/private/paramiko.util.PFilter-class.html124
-rw-r--r--docs/private/threading.Thread-class.html237
-rw-r--r--docs/private/threading._Verbose-class.html127
-rw-r--r--docs/private/toc-everything.html224
-rw-r--r--docs/private/toc-paramiko-module.html94
-rw-r--r--docs/private/toc-paramiko.agent-module.html25
-rw-r--r--docs/private/toc-paramiko.auth_handler-module.html17
-rw-r--r--docs/private/toc-paramiko.ber-module.html27
-rw-r--r--docs/private/toc-paramiko.channel-module.html22
-rw-r--r--docs/private/toc-paramiko.common-module.html63
-rw-r--r--docs/private/toc-paramiko.compress-module.html23
-rw-r--r--docs/private/toc-paramiko.dsskey-module.html17
-rw-r--r--docs/private/toc-paramiko.file-module.html28
-rw-r--r--docs/private/toc-paramiko.kex_gex-module.html30
-rw-r--r--docs/private/toc-paramiko.kex_group1-module.html30
-rw-r--r--docs/private/toc-paramiko.logging22-module.html39
-rw-r--r--docs/private/toc-paramiko.message-module.html17
-rw-r--r--docs/private/toc-paramiko.packet-module.html22
-rw-r--r--docs/private/toc-paramiko.pipe-module.html28
-rw-r--r--docs/private/toc-paramiko.pkey-module.html17
-rw-r--r--docs/private/toc-paramiko.primes-module.html28
-rw-r--r--docs/private/toc-paramiko.rsakey-module.html17
-rw-r--r--docs/private/toc-paramiko.server-module.html22
-rw-r--r--docs/private/toc-paramiko.sftp-module.html66
-rw-r--r--docs/private/toc-paramiko.sftp_attr-module.html17
-rw-r--r--docs/private/toc-paramiko.sftp_client-module.html22
-rw-r--r--docs/private/toc-paramiko.sftp_file-module.html17
-rw-r--r--docs/private/toc-paramiko.sftp_handle-module.html17
-rw-r--r--docs/private/toc-paramiko.sftp_server-module.html22
-rw-r--r--docs/private/toc-paramiko.sftp_si-module.html17
-rw-r--r--docs/private/toc-paramiko.ssh_exception-module.html22
-rw-r--r--docs/private/toc-paramiko.transport-module.html27
-rw-r--r--docs/private/toc-paramiko.util-module.html52
-rw-r--r--docs/private/toc.html53
-rw-r--r--docs/private/trees.html243
-rw-r--r--docs/public/__builtin__.object-class.html268
-rw-r--r--docs/public/__builtin__.type-class.html504
-rw-r--r--docs/public/epydoc.css100
-rw-r--r--docs/public/exceptions.Exception-class.html85
-rw-r--r--docs/public/frames.html13
-rw-r--r--docs/public/help.html224
-rw-r--r--docs/public/index.html13
-rw-r--r--docs/public/indices.html803
-rw-r--r--docs/public/paramiko-module.html229
-rw-r--r--docs/public/paramiko.Agent-class.html147
-rw-r--r--docs/public/paramiko.AgentKey-class.html236
-rw-r--r--docs/public/paramiko.BadAuthenticationType-class.html141
-rw-r--r--docs/public/paramiko.BufferedFile-class.html554
-rw-r--r--docs/public/paramiko.Channel-class.html1241
-rw-r--r--docs/public/paramiko.DSSKey-class.html423
-rw-r--r--docs/public/paramiko.Message-class.html650
-rw-r--r--docs/public/paramiko.PasswordRequiredException-class.html91
-rw-r--r--docs/public/paramiko.RSAKey-class.html423
-rw-r--r--docs/public/paramiko.SFTP-class.html287
-rw-r--r--docs/public/paramiko.SFTPAttributes-class.html360
-rw-r--r--docs/public/paramiko.SFTPClient-class.html1009
-rw-r--r--docs/public/paramiko.SFTPError-class.html85
-rw-r--r--docs/public/paramiko.SFTPFile-class.html560
-rw-r--r--docs/public/paramiko.SFTPHandle-class.html325
-rw-r--r--docs/public/paramiko.SFTPServer-class.html403
-rw-r--r--docs/public/paramiko.SSHException-class.html94
-rw-r--r--docs/public/paramiko.SecurityOptions-class.html274
-rw-r--r--docs/public/paramiko.SubsystemHandler-class.html327
-rw-r--r--docs/public/paramiko.Transport-class.html1524
-rw-r--r--docs/public/paramiko.agent-module.html164
-rw-r--r--docs/public/paramiko.dsskey-module.html62
-rw-r--r--docs/public/paramiko.file-module.html61
-rw-r--r--docs/public/paramiko.message-module.html61
-rw-r--r--docs/public/paramiko.pkey-module.html61
-rw-r--r--docs/public/paramiko.rsakey-module.html62
-rw-r--r--docs/public/paramiko.server-module.html74
-rw-r--r--docs/public/paramiko.server.InteractiveQuery-class.html195
-rw-r--r--docs/public/paramiko.sftp-module.html1060
-rw-r--r--docs/public/paramiko.sftp_attr-module.html59
-rw-r--r--docs/public/paramiko.sftp_client-module.html61
-rw-r--r--docs/public/paramiko.sftp_file-module.html62
-rw-r--r--docs/public/paramiko.sftp_handle-module.html61
-rw-r--r--docs/public/paramiko.sftp_server-module.html61
-rw-r--r--docs/public/paramiko.sftp_si-module.html63
-rw-r--r--docs/public/paramiko.transport-module.html63
-rw-r--r--docs/public/paramiko.util-module.html369
-rw-r--r--docs/public/paramiko.util.PFilter-class.html124
-rw-r--r--docs/public/threading.Thread-class.html161
-rw-r--r--docs/public/toc-everything.html121
-rw-r--r--docs/public/toc-paramiko-module.html69
-rw-r--r--docs/public/toc-paramiko.agent-module.html25
-rw-r--r--docs/public/toc-paramiko.dsskey-module.html17
-rw-r--r--docs/public/toc-paramiko.file-module.html21
-rw-r--r--docs/public/toc-paramiko.message-module.html17
-rw-r--r--docs/public/toc-paramiko.pkey-module.html17
-rw-r--r--docs/public/toc-paramiko.rsakey-module.html17
-rw-r--r--docs/public/toc-paramiko.server-module.html22
-rw-r--r--docs/public/toc-paramiko.sftp-module.html65
-rw-r--r--docs/public/toc-paramiko.sftp_attr-module.html17
-rw-r--r--docs/public/toc-paramiko.sftp_client-module.html21
-rw-r--r--docs/public/toc-paramiko.sftp_file-module.html17
-rw-r--r--docs/public/toc-paramiko.sftp_handle-module.html17
-rw-r--r--docs/public/toc-paramiko.sftp_server-module.html21
-rw-r--r--docs/public/toc-paramiko.sftp_si-module.html17
-rw-r--r--docs/public/toc-paramiko.transport-module.html25
-rw-r--r--docs/public/toc-paramiko.util-module.html48
-rw-r--r--docs/public/toc.html41
-rw-r--r--docs/public/trees.html151
-rw-r--r--forward.py219
-rw-r--r--paramiko/__init__.py146
-rw-r--r--paramiko/agent.py138
-rw-r--r--paramiko/auth_handler.py410
-rw-r--r--paramiko/ber.py128
-rw-r--r--paramiko/channel.py1174
-rw-r--r--paramiko/common.py136
-rw-r--r--paramiko/compress.py39
-rw-r--r--paramiko/dsskey.py176
-rw-r--r--paramiko/file.py440
-rw-r--r--paramiko/kex_gex.py202
-rw-r--r--paramiko/kex_group1.py136
-rw-r--r--paramiko/logging22.py66
-rw-r--r--paramiko/message.py301
-rw-r--r--paramiko/packet.py442
-rw-r--r--paramiko/pipe.py105
-rw-r--r--paramiko/pkey.py339
-rw-r--r--paramiko/primes.py148
-rw-r--r--paramiko/rsakey.py165
-rw-r--r--paramiko/server.py527
-rw-r--r--paramiko/sftp.py168
-rw-r--r--paramiko/sftp_attr.py208
-rw-r--r--paramiko/sftp_client.py618
-rw-r--r--paramiko/sftp_file.py307
-rw-r--r--paramiko/sftp_handle.py188
-rw-r--r--paramiko/sftp_server.py420
-rw-r--r--paramiko/sftp_si.py303
-rw-r--r--paramiko/ssh_exception.py69
-rw-r--r--paramiko/transport.py1824
-rw-r--r--paramiko/util.py357
-rw-r--r--setup.py49
-rw-r--r--test.py103
-rw-r--r--tests/loop.py104
-rw-r--r--tests/stub_sftp.py192
-rw-r--r--tests/test_dss.key12
-rw-r--r--tests/test_dss_password.key15
-rw-r--r--tests/test_file.py153
-rw-r--r--tests/test_kex.py183
-rw-r--r--tests/test_message.py102
-rw-r--r--tests/test_packetizer.py70
-rw-r--r--tests/test_pkey.py140
-rw-r--r--tests/test_rsa.key15
-rw-r--r--tests/test_rsa_password.key18
-rw-r--r--tests/test_sftp.py740
-rw-r--r--tests/test_transport.py573
-rw-r--r--tests/test_util.py80
237 files changed, 55748 insertions, 0 deletions
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..b1e3f5a
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..a0ec679
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,25 @@
+Metadata-Version: 1.0
+Name: paramiko
+Version: 1.5.2
+Summary: SSH2 protocol library
+Home-page: http://www.lag.net/paramiko/
+Author: Robey Pointer
+Author-email: robey@lag.net
+License: LGPL
+Download-URL: http://www.lag.net/paramiko/download/paramiko-1.5.2.zip
+Description:
+ This is a library for making SSH2 connections (client or server).
+ Emphasis is on using SSH2 as an alternative to SSL for making secure
+ connections between python scripts. All major ciphers and hash methods
+ are supported. SFTP client and server mode are both supported too.
+
+ Required packages:
+ pyCrypt
+
+Platform: Posix; MacOS X; Windows
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
+Classifier: Operating System :: OS Independent
+Classifier: Topic :: Internet
+Classifier: Topic :: Security :: Cryptography
diff --git a/README b/README
new file mode 100644
index 0000000..45997ac
--- /dev/null
+++ b/README
@@ -0,0 +1,248 @@
+paramiko 1.5.2
+"rhydon" release, 04 dec 2005
+
+Copyright (c) 2003-2005 Robey Pointer <robey@lag.net>
+
+http://www.lag.net/paramiko/
+
+
+*** WHAT
+
+"paramiko" is a combination of the esperanto words for "paranoid" and
+"friend". it's a module for python 2.2+ that implements the SSH2 protocol
+for secure (encrypted and authenticated) connections to remote machines.
+unlike SSL (aka TLS), SSH2 protocol does not require heirarchical
+certificates signed by a powerful central authority. you may know SSH2 as
+the protocol that replaced telnet and rsh for secure access to remote
+shells, but the protocol also includes the ability to open arbitrary
+channels to remote services across the encrypted tunnel (this is how sftp
+works, for example).
+
+it is written entirely in python (no C or platform-dependent code) and is
+released under the GNU LGPL (lesser GPL).
+
+the package and its API is fairly well documented in the "doc/" folder
+that should have come with this archive.
+
+
+*** REQUIREMENTS
+
+python 2.3 <http://www.python.org/>
+ (python 2.2 is also supported, but not recommended)
+pycrypto 1.9+ <http://www.amk.ca/python/code/crypto.html>
+ (2.0 works too)
+
+pycrypto compiled for Win32 can be downloaded from the HashTar homepage:
+ http://nitace.bsd.uchicago.edu:8080/hashtar
+you can also build it yourself using the free MinGW tools and this command
+line (thanks to Roger Binns for the info):
+ python setup.py build --compiler=mingw32 bdist_wininst
+
+
+*** PORTABILITY
+
+i code and test this library on Linux and MacOS X. for that reason, i'm
+pretty sure that it works for all posix platforms, including MacOS. i
+also think it will work on Windows, though i've never tested it there. if
+you run into Windows problems, send me a patch: portability is important
+to me.
+
+python 2.2 may work, thanks to some patches from Roger Binns. things to
+watch out for:
+* sockets in 2.2 don't support timeouts, so the 'select' module is
+ imported to do polling.
+* logging is mostly stubbed out. it works just enough to let paramiko
+ create log files for debugging, if you want them. to get real logging,
+ you can backport python 2.3's logging package. Roger has done that
+ already:
+ http://sourceforge.net/project/showfiles.php?group_id=75211&package_id=113804
+
+you really should upgrade to python 2.3. laziness is no excuse! :)
+
+some python distributions don't include the utf-8 string encodings, for
+reasons of space (misdirected as that is). if your distribution is
+missing encodings, you'll see an error like this:
+
+LookupError: no codec search functions registered: can't find encoding
+
+this means you need to copy string encodings over from a working system.
+(it probably only happens on embedded systems, not normal python
+installls.)
+Valeriy Pogrebitskiy says the best place to look is
+'.../lib/python*/encodings/__init__.py'.
+
+
+*** DEMO
+
+several demo scripts come with paramiko to demonstrate how to use it.
+probably the simplest demo of all is this:
+
+ import paramiko, base64
+ key = paramiko.RSAKey(data=base64.decodestring('AAA...'))
+ t = paramiko.Transport('ssh.example.com')
+ t.connect(username='strongbad', password='thecheat', hostkey=key)
+ chan = t.open_session()
+ chan.exec_command('ls')
+ for line in chan.makefile('r+'):
+ print '... ' + line.strip('\n')
+ chan.close()
+ t.close()
+
+...which prints out the results of executing 'ls' on a remote server.
+(the host key 'AAA...' should of course be replaced by the actual base64
+encoding of the host key. if you skip host key verification, the
+connection is not secure!)
+
+the following example scripts get progressively more detailed:
+
+demo_simple.py
+ calls invoke_shell() and emulates a terminal/tty through which you can
+ execute commands interactively on a remote server. think of it as a
+ poor man's ssh command-line client.
+
+demo.py
+ same as demo_simple.py, but allows you to authenticiate using a
+ private key, attempts to use an SSH-agent if present, and uses the long
+ form of some of the API calls.
+
+forward.py
+ command-line script to set up port-forwarding across an ssh transport.
+ (requires python 2.3.)
+
+demo_server.py
+ an ssh server that listens on port 2200 and accepts a login for
+ 'robey' (password 'foo'), and pretends to be a BBS. meant to be a
+ very simple demo of writing an ssh server.
+
+
+*** USE
+
+the demo scripts are probably the best example of how to use this package.
+there is also a lot of documentation, generated with epydoc, in the doc/
+folder. point your browser there. seriously, do it. mad props to
+epydoc, which actually motivated me to write more documentation than i
+ever would have before.
+
+there are also unit tests here:
+ $ python ./test.py
+which will verify that some of the core components are working correctly.
+not much is tested yet, but it's a start. the tests for SFTP are probably
+the best and easiest examples of how to use the SFTP class.
+
+
+*** WHAT'S NEW
+
+highlights of what's new in each release:
+
+v1.5.2 RHYDON
+* compression support (opt-in via Transport.use_compression)
+* sftp files may be opened with mode flag 'x' for O_EXCL (exclusive-open)
+ behavior, which has no direct python equivalent
+* added experimental util functions for parsing openssh config files
+* fixed a few bugs (and potential deadlocks) with key renegotiation
+* fixed a bug that caused SFTPFile.prefetch to occasionally lock up
+* fixed an sftp bug which affected van dyke sftp servers
+* fixed the behavior of select()ing on a closed channel, such that it will
+ always trigger as readable
+
+v1.5.1 QUILAVA
+* SFTPFile.prefetch() added to dramatically speed up downloads (automatically
+ turned on in SFTPClient.get())
+* fixed bug where garbage-collected Channels could trigger the Transport to
+ close the session (reported by gordon good)
+* fixed a deadlock in rekeying (reported by wendell wood)
+* fixed some windows bugs and SFTPAttributes.__str__() (reported by grzegorz
+ makarewicz)
+* better sftp error reporting by adding fake "errno" info to IOErrors
+
+v1.5 PARAS
+* added support for "keyboard-interactive" authentication
+* added mode (on by default) where password authentication will try to
+ fallback to "keyboard-interactive" if it's supported
+* added pipelining to SFTPFile.write and SFTPClient.put
+* fixed bug with SFTPFile.close() not guarding against being called more
+ than once (thanks to Nathaniel Smith)
+* fixed broken 'a' flag in SFTPClient.file() (thanks to Nathaniel Smith)
+* fixed up epydocs to look nicer
+* reorganized auth_transport into auth_handler, which seems to be a cleaner
+ separation
+* demo scripts fixed to have a better chance of loading the host keys
+ correctly on windows/cygwin
+
+v1.4 ODDISH
+* added SSH-agent support (for posix) from john rochester
+* added chdir() and getcwd() to SFTPClient, to emulate a "working directory"
+* added get() and put() to SFTPClient, to emulate ftp whole-file transfers
+* added check() to SFTPFile (a file hashing protocol extension)
+* fixed Channels and SFTPFiles (among others) to auto-close when GC'd
+* fixed Channel.fileno() for Windows, this time really
+* don't log socket errors as "unknown exception"
+* some misc. backward-compatible API improvements (like allowing
+ Transport.start_client() and start_server() to be called in a blocking way)
+
+v1.3.1 NIDORAN
+* added SFTPClient.close()
+* fixed up some outdated documentation
+* made SFTPClient.file() an alias for open()
+* added Transport.open_sftp_client() for convenience
+* refactored packetizing out of Transport
+* fixed bug (reported by alain s.) where connecting to a non-SSH host could
+ cause paramiko to freeze up
+* fixed Channel.fileno() for Windows (again)
+* some more unit tests
+
+v1.3 MAROWAK
+* fixed a bug where packets larger than about 12KB would cause the session
+ to die on all platforms except osx
+* added a potential workaround for windows to let Channel.fileno() (and
+ therefore the select module) work!
+* changed API for subsystem handlers (sorry!) to pass more info and make it
+ easier to write a functional SFTP server
+
+v1.2 LAPRAS
+* added SFTPClient.listdir_attr() for fetching a list of files and their
+ attributes in one call
+* added Channel.recv_exit_status() and Channel.send_exit_status() for
+ manipulating the exit status of a command from either client or server
+ mode
+* moved check_global_request into ServerInterface, where it should've been
+ all along (oops)
+* SFTPHandle's default implementations are fleshed out more
+* made logging a bit more consistent, and started logging thread ids
+* fixed a few race conditions, one of which would sometimes cause a Transport
+ to fail to start on slow machines
+* more unit tests
+
+v1.1 KABUTO
+* server-side SFTP support
+* added support for stderr streams on client & server channels
+* added a new distinct exception for failed client authentication
+ when caused by the server rejecting that *type* of auth
+* added support for multi-part authentication
+* fixed bug where get_username() wasn't working in server mode
+
+v1.0 JIGGLYPUFF
+* fixed bug that broke server-mode authentication by private key
+* fixed bug where closing a Channel could end up killing the entire
+ Transport
+* actually include demo_windows.py this time (oops!)
+* fixed recently-introduced bug in group-exchange key negotiation that
+ would generate the wrong hash (and therefore fail the initial handshake)
+* server-mode subsystem handler is a bit more flexible
+
+
+*** MISSING LINKS
+
+* host-based auth (yuck!)
+* SFTP implicit file locking?
+* ChannelException like the java version has
+* would be nice to have windows putty "pagent" support -- looks very hard
+
+* ctr forms of ciphers are missing (blowfish-ctr, aes128-ctr, aes256-ctr)
+* sftp protocol 6 support (ugh....) -- once it settles down more
+
+* make a simple example demonstrating use of SocketServer (besides forward.py?)
+
+* make a function to parse .ssh/config files:
+ User, Hostname, Port, ProxyCommand, IdentityFile, HostKeyAlias
+ ProxyCommand: %h = host, %p = port, "none" = disable
diff --git a/demo.py b/demo.py
new file mode 100644
index 0000000..a02e886
--- /dev/null
+++ b/demo.py
@@ -0,0 +1,210 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+
+# ----- WINDOWS USERS PLEASE NOTE -----
+# This demo won't work on Windows because it uses pseudo-terminals, which
+# are a posix-only feature. check out the README file for a simpler demo.
+
+
+import sys, os, socket, threading, getpass, time, base64, select, termios, tty, traceback
+import paramiko
+
+
+##### utility functions
+
+def agent_auth(username, t, event):
+ agent = paramiko.Agent()
+ agent_keys = agent.get_keys()
+ if len(agent_keys) > 0:
+ for key in agent_keys:
+ print 'Trying ssh-agent key %s' % paramiko.util.hexify(key.get_fingerprint()),
+ t.auth_publickey(username, key, event)
+ event.wait(10)
+ if t.is_authenticated():
+ print '... success!'
+ return
+ print '... nope.'
+
+def manual_auth(username, hostname, event):
+ default_auth = 'p'
+ auth = raw_input('Auth by (p)assword, (r)sa key, or (d)ss key? [%s] ' % default_auth)
+ if len(auth) == 0:
+ auth = default_auth
+
+ if auth == 'r':
+ default_path = os.environ['HOME'] + '/.ssh/id_rsa'
+ path = raw_input('RSA key [%s]: ' % default_path)
+ if len(path) == 0:
+ path = default_path
+ try:
+ key = paramiko.RSAKey.from_private_key_file(path)
+ except paramiko.PasswordRequiredException:
+ password = getpass.getpass('RSA key password: ')
+ key = paramiko.RSAKey.from_private_key_file(path, password)
+ t.auth_publickey(username, key, event)
+ elif auth == 'd':
+ default_path = os.environ['HOME'] + '/.ssh/id_dsa'
+ path = raw_input('DSS key [%s]: ' % default_path)
+ if len(path) == 0:
+ path = default_path
+ try:
+ key = paramiko.DSSKey.from_private_key_file(path)
+ except paramiko.PasswordRequiredException:
+ password = getpass.getpass('DSS key password: ')
+ key = paramiko.DSSKey.from_private_key_file(path, password)
+ t.auth_publickey(username, key, event)
+ else:
+ pw = getpass.getpass('Password for %s@%s: ' % (username, hostname))
+ t.auth_password(username, pw, event)
+
+
+##### main demo
+
+# setup logging
+paramiko.util.log_to_file('demo.log')
+
+
+username = ''
+if len(sys.argv) > 1:
+ hostname = sys.argv[1]
+ if hostname.find('@') >= 0:
+ username, hostname = hostname.split('@')
+else:
+ hostname = raw_input('Hostname: ')
+if len(hostname) == 0:
+ print '*** Hostname required.'
+ sys.exit(1)
+port = 22
+if hostname.find(':') >= 0:
+ hostname, portstr = hostname.split(':')
+ port = int(portstr)
+
+# now connect
+try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.connect((hostname, port))
+except Exception, e:
+ print '*** Connect failed: ' + str(e)
+ traceback.print_exc()
+ sys.exit(1)
+
+try:
+ event = threading.Event()
+ t = paramiko.Transport(sock)
+ t.start_client(event)
+ # print repr(t)
+ event.wait(15)
+ if not t.is_active():
+ print '*** SSH negotiation failed.'
+ sys.exit(1)
+ # print repr(t)
+
+ try:
+ keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
+ except IOError:
+ try:
+ keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))
+ except IOError:
+ print '*** Unable to open host keys file'
+ keys = {}
+
+ key = t.get_remote_server_key()
+ if not keys.has_key(hostname):
+ print '*** WARNING: Unknown host key!'
+ elif not keys[hostname].has_key(key.get_name()):
+ print '*** WARNING: Unknown host key!'
+ elif keys[hostname][key.get_name()] != key:
+ print '*** WARNING: Host key has changed!!!'
+ sys.exit(1)
+ else:
+ print '*** Host key OK.'
+
+ event.clear()
+
+ # get username
+ if username == '':
+ default_username = getpass.getuser()
+ username = raw_input('Username [%s]: ' % default_username)
+ if len(username) == 0:
+ username = default_username
+
+ agent_auth(username, t, event)
+
+ # ask for what kind of authentication to try
+ if not t.is_authenticated():
+ manual_auth(username, hostname, event)
+
+ event.wait(10)
+ # print repr(t)
+ if not t.is_authenticated():
+ print '*** Authentication failed. :('
+ t.close()
+ sys.exit(1)
+
+ chan = t.open_session()
+ chan.get_pty()
+ chan.invoke_shell()
+ print '*** Here we go!'
+ print
+
+ try:
+ oldtty = termios.tcgetattr(sys.stdin)
+ tty.setraw(sys.stdin.fileno())
+ tty.setcbreak(sys.stdin.fileno())
+ chan.settimeout(0.0)
+
+ while 1:
+ r, w, e = select.select([chan, sys.stdin], [], [])
+ if chan in r:
+ try:
+ x = chan.recv(1024)
+ if len(x) == 0:
+ print
+ print '*** EOF\r\n',
+ break
+ sys.stdout.write(x)
+ sys.stdout.flush()
+ except socket.timeout:
+ pass
+ if sys.stdin in r:
+ # FIXME: reading 1 byte at a time is incredibly dumb.
+ x = sys.stdin.read(1)
+ if len(x) == 0:
+ print
+ print '*** Bye.\r\n',
+ break
+ chan.send(x)
+
+ finally:
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)
+
+ chan.close()
+ t.close()
+
+except Exception, e:
+ print '*** Caught exception: ' + str(e.__class__) + ': ' + str(e)
+ traceback.print_exc()
+ try:
+ t.close()
+ except:
+ pass
+ sys.exit(1)
+
diff --git a/demo_server.py b/demo_server.py
new file mode 100644
index 0000000..599eb46
--- /dev/null
+++ b/demo_server.py
@@ -0,0 +1,138 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+import sys, os, socket, threading, traceback, base64
+import paramiko
+
+# setup logging
+paramiko.util.log_to_file('demo_server.log')
+
+#host_key = paramiko.RSAKey(filename='tests/test_rsa.key')
+host_key = paramiko.DSSKey(filename='tests/test_dss.key')
+
+print 'Read key: ' + paramiko.util.hexify(host_key.get_fingerprint())
+
+
+class Server (paramiko.ServerInterface):
+ # 'data' is the output of base64.encodestring(str(key))
+ data = 'AAAAB3NzaC1yc2EAAAABIwAAAIEAyO4it3fHlmGZWJaGrfeHOVY7RWO3P9M7hpfAu7jJ2d7eothvfeuoRFtJwhUmZDluRdFyhFY/hFAh76PJKGAusIqIQKlkJxMCKDqIexkgHAfID/6mqvmnSJf0b5W8v5h2pI/stOSwTQ+pxVhwJ9ctYDhRSlF0iTUWT10hcuO4Ks8='
+ good_pub_key = paramiko.RSAKey(data=base64.decodestring(data))
+
+ def __init__(self):
+ self.event = threading.Event()
+
+ def check_channel_request(self, kind, chanid):
+ if kind == 'session':
+ return paramiko.OPEN_SUCCEEDED
+ return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED
+
+ def check_auth_password(self, username, password):
+ if (username == 'robey') and (password == 'foo'):
+ return paramiko.AUTH_SUCCESSFUL
+ return paramiko.AUTH_FAILED
+
+ def check_auth_publickey(self, username, key):
+ print 'Auth attempt with key: ' + paramiko.util.hexify(key.get_fingerprint())
+ if (username == 'robey') and (key == self.good_pub_key):
+ return paramiko.AUTH_SUCCESSFUL
+ return paramiko.AUTH_FAILED
+
+ def get_allowed_auths(self, username):
+ return 'password,publickey'
+
+ def check_channel_shell_request(self, channel):
+ self.event.set()
+ return True
+
+ def check_channel_pty_request(self, channel, term, width, height, pixelwidth,
+ pixelheight, modes):
+ return True
+
+
+# now connect
+try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ sock.bind(('', 2200))
+except Exception, e:
+ print '*** Bind failed: ' + str(e)
+ traceback.print_exc()
+ sys.exit(1)
+
+try:
+ sock.listen(100)
+ print 'Listening for connection ...'
+ client, addr = sock.accept()
+except Exception, e:
+ print '*** Listen/accept failed: ' + str(e)
+ traceback.print_exc()
+ sys.exit(1)
+
+print 'Got a connection!'
+
+try:
+ event = threading.Event()
+ t = paramiko.Transport(client)
+ try:
+ t.load_server_moduli()
+ except:
+ print '(Failed to load moduli -- gex will be unsupported.)'
+ raise
+ t.add_server_key(host_key)
+ server = Server()
+ t.start_server(event, server)
+ while 1:
+ event.wait(0.1)
+ if not t.is_active():
+ print '*** SSH negotiation failed.'
+ sys.exit(1)
+ if event.isSet():
+ break
+ # print repr(t)
+
+ # wait for auth
+ chan = t.accept(20)
+ if chan is None:
+ print '*** No channel.'
+ sys.exit(1)
+ print 'Authenticated!'
+ server.event.wait(10)
+ if not server.event.isSet():
+ print '*** Client never asked for a shell.'
+ sys.exit(1)
+
+ chan.send('\r\n\r\nWelcome to my dorky little BBS!\r\n\r\n')
+ chan.send('We are on fire all the time! Hooray! Candy corn for everyone!\r\n')
+ chan.send('Happy birthday to Robot Dave!\r\n\r\n')
+ chan.send('Username: ')
+ f = chan.makefile('rU')
+ username = f.readline().strip('\r\n')
+ chan.send('\r\nI don\'t like you, ' + username + '.\r\n')
+ chan.close()
+
+except Exception, e:
+ print '*** Caught exception: ' + str(e.__class__) + ': ' + str(e)
+ traceback.print_exc()
+ try:
+ t.close()
+ except:
+ pass
+ sys.exit(1)
+
diff --git a/demo_simple.py b/demo_simple.py
new file mode 100644
index 0000000..655a1a4
--- /dev/null
+++ b/demo_simple.py
@@ -0,0 +1,128 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+
+# ----- WINDOWS USERS PLEASE NOTE -----
+# This demo won't work on Windows because it uses pseudo-terminals, which
+# are a posix-only feature. check out the README file for a simpler demo.
+
+
+import sys, os, base64, getpass, socket, traceback, termios, tty, select
+import paramiko
+
+
+# setup logging
+paramiko.util.log_to_file('demo_simple.log')
+
+# get hostname
+username = ''
+if len(sys.argv) > 1:
+ hostname = sys.argv[1]
+ if hostname.find('@') >= 0:
+ username, hostname = hostname.split('@')
+else:
+ hostname = raw_input('Hostname: ')
+if len(hostname) == 0:
+ print '*** Hostname required.'
+ sys.exit(1)
+port = 22
+if hostname.find(':') >= 0:
+ hostname, portstr = hostname.split(':')
+ port = int(portstr)
+
+
+# get username
+if username == '':
+ default_username = getpass.getuser()
+ username = raw_input('Username [%s]: ' % default_username)
+ if len(username) == 0:
+ username = default_username
+password = getpass.getpass('Password for %s@%s: ' % (username, hostname))
+
+
+# get host key, if we know one
+hostkeytype = None
+hostkey = None
+try:
+ hkeys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
+except IOError:
+ try:
+ hkeys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))
+ except IOError:
+ print '*** Unable to open host keys file'
+ hkeys = {}
+
+if hkeys.has_key(hostname):
+ hostkeytype = hkeys[hostname].keys()[0]
+ hostkey = hkeys[hostname][hostkeytype]
+ print 'Using host key of type %s' % hostkeytype
+
+
+# now, connect and use paramiko Transport to negotiate SSH2 across the connection
+try:
+ t = paramiko.Transport((hostname, port))
+ t.connect(username=username, password=password, hostkey=hostkey)
+ chan = t.open_session()
+ chan.get_pty()
+ chan.invoke_shell()
+ print '*** Here we go!'
+ print
+
+ try:
+ oldtty = termios.tcgetattr(sys.stdin)
+ tty.setraw(sys.stdin.fileno())
+ tty.setcbreak(sys.stdin.fileno())
+ chan.settimeout(0.0)
+
+ while True:
+ r, w, e = select.select([chan, sys.stdin], [], [])
+ if chan in r:
+ try:
+ x = chan.recv(1024)
+ if len(x) == 0:
+ print '\r\n*** EOF\r\n',
+ break
+ sys.stdout.write(x)
+ sys.stdout.flush()
+ except socket.timeout:
+ pass
+ if sys.stdin in r:
+ # FIXME: reading 1 byte at a time is incredibly dumb.
+ x = sys.stdin.read(1)
+ if len(x) == 0:
+ print
+ print '*** Bye.\r\n',
+ break
+ chan.send(x)
+
+ finally:
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)
+
+ chan.close()
+ t.close()
+
+except Exception, e:
+ print '*** Caught exception: %s: %s' % (e.__class__, e)
+ traceback.print_exc()
+ try:
+ t.close()
+ except:
+ pass
+ sys.exit(1)
diff --git a/docs/epydoc.css b/docs/epydoc.css
new file mode 100644
index 0000000..46080bd
--- /dev/null
+++ b/docs/epydoc.css
@@ -0,0 +1,100 @@
+
+/* Body color */
+body { background: #ffffff; color: #000000; }
+
+/* Tables */
+table.summary, table.details, table.index
+ { background: #e8f0f8; color: #000000; }
+tr.summary, tr.details, tr.index
+ { background: #70b0f0; color: #000000;
+ text-align: left; font-size: 120%; }
+tr.group { background: #c0e0f8; color: #000000;
+ text-align: left; font-size: 120%;
+ font-style: italic; }
+
+/* Documentation page titles */
+h2.module { margin-top: 0.2em; }
+h2.class { margin-top: 0.2em; }
+
+/* Headings */
+h1.heading { font-size: +140%; font-style: italic;
+ font-weight: bold; }
+h2.heading { font-size: +125%; font-style: italic;
+ font-weight: bold; }
+h3.heading { font-size: +110%; font-style: italic;
+ font-weight: normal; }
+
+/* Base tree */
+pre.base-tree { font-size: 80%; margin: 0; }
+
+/* Details Sections */
+table.func-details { background: #e8f0f8; color: #000000;
+ border: 2px groove #c0d0d0;
+ padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
+h3.func-detail { background: transparent; color: #000000;
+ margin: 0 0 1em 0; }
+
+table.var-details { background: #e8f0f8; color: #000000;
+ border: 2px groove #c0d0d0;
+ padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
+h3.var-details { background: transparent; color: #000000;
+ margin: 0 0 1em 0; }
+
+/* Function signatures */
+.sig { background: transparent; color: #000000;
+ font-weight: bold; }
+.sig-name { background: transparent; color: #006080; }
+.sig-arg, .sig-kwarg, .sig-vararg
+ { background: transparent; color: #008060; }
+.sig-default { background: transparent; color: #602000; }
+.summary-sig { background: transparent; color: #000000; }
+.summary-sig-name { background: transparent; color: #204080; }
+.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg
+ { background: transparent; color: #008060; }
+
+/* Doctest blocks */
+.py-src { background: transparent; color: #000000; }
+.py-prompt { background: transparent; color: #005050;
+ font-weight: bold;}
+.py-string { background: transparent; color: #006030; }
+.py-comment { background: transparent; color: #003060; }
+.py-keyword { background: transparent; color: #600000; }
+.py-output { background: transparent; color: #404040; }
+pre.doctestblock { background: #f4faff; color: #000000;
+ padding: .5em; margin: 1em;
+ border: 1px solid #708890; }
+table pre.doctestblock
+ { background: #dce4ec; color: #000000;
+ padding: .5em; margin: 1em;
+ border: 1px solid #708890; }
+
+/* Variable values */
+pre.variable { background: #dce4ec; color: #000000;
+ padding: .5em; margin: 0;
+ border: 1px solid #708890; }
+.variable-linewrap { background: transparent; color: #604000; }
+.variable-ellipsis { background: transparent; color: #604000; }
+.variable-quote { background: transparent; color: #604000; }
+.re { background: transparent; color: #000000; }
+.re-char { background: transparent; color: #006030; }
+.re-op { background: transparent; color: #600000; }
+.re-group { background: transparent; color: #003060; }
+.re-ref { background: transparent; color: #404040; }
+
+/* Navigation bar */
+table.navbar { background: #a0c0ff; color: #0000ff;
+ border: 2px groove #c0d0d0; }
+th.navbar { background: #a0c0ff; color: #0000ff; }
+th.navselect { background: #70b0ff; color: #000000; }
+.nomargin { margin: 0; }
+
+/* Links */
+a:link { background: transparent; color: #0000ff; }
+a:visited { background: transparent; color: #204080; }
+a.navbar:link { background: transparent; color: #0000ff;
+ text-decoration: none; }
+a.navbar:visited { background: transparent; color: #204080;
+ text-decoration: none; }
+
+/* Lists */
+ul { margin-top: 0; }
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..d2fca35
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
+<html>
+<head>
+ <title> API Documentation </title>
+</head>
+<frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="public/toc.html" name="moduleListFrame">
+ <frame src="public/toc-everything.html" name="moduleFrame">
+ </frameset>
+ <frame src="public/paramiko-module.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/docs/private/__builtin__.object-class.html b/docs/private/__builtin__.object-class.html
new file mode 100644
index 0000000..1ac54de
--- /dev/null
+++ b/docs/private/__builtin__.object-class.html
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>__builtin__.object</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;__builtin__ ::
+ Class&nbsp;object
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/__builtin__.object-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="__builtin__.object-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type object</h2>
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a>,
+ <a href="paramiko.Channel-class.html"><code>Channel</code></a>,
+ <a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a>,
+ <a href="paramiko.Message-class.html"><code>Message</code></a>,
+ <a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a>,
+ <a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a>,
+ <a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a>,
+ <a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a>,
+ <a href="__builtin__.type-class.html"><code>type</code></a>,
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a>,
+ <a href="../private/paramiko.AuthHandler-class.html"><code>AuthHandler</code></a>,
+ <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a>,
+ <a href="../private/paramiko.ber.BER-class.html"><code>BER</code></a>,
+ <a href="../private/paramiko.logging22.Formatter-class.html"><code>Formatter</code></a>,
+ <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>KexGex</code></a>,
+ <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>KexGroup1</code></a>,
+ <a href="../private/paramiko.logging22.logger-class.html"><code>logger</code></a>,
+ <a href="../private/paramiko.primes.ModulusPack-class.html"><code>ModulusPack</code></a>,
+ <a href="../private/paramiko.Packetizer-class.html"><code>Packetizer</code></a>,
+ <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a>,
+ <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>PosixPipe</code></a>,
+ <a href="../private/paramiko.ServerInterface-class.html"><code>ServerInterface</code></a>,
+ <a href="../private/paramiko.SFTPServerInterface-class.html"><code>SFTPServerInterface</code></a>,
+ <a href="../private/paramiko.logging22.StreamHandler-class.html"><code>StreamHandler</code></a>,
+ <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>WindowsPipe</code></a>,
+ <a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>ZlibCompressor</code></a>,
+ <a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>ZlibDecompressor</code></a></dd></dl>
+
+<hr/>
+
+The most base type
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__init__(...) initializes x; see x.__class__.__doc__ for
+signature</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td>
+ <td><a name="__class__"></a><b><code>__class__</code></b> = <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ x.__init__(...) initializes x; see x.__class__.__doc__ for
+ signature
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__delattr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__delattr__('name') &lt;==&gt; del x.name
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__getattribute__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__getattribute__('name') &lt;==&gt; x.name
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__hash__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Hashing function)</i>
+ </h3>
+ x.__hash__() &lt;==&gt; hash(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+hash(x)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__new__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
+ <span class=sig-arg>S</span>,
+ <span class="sig-vararg">...</span>)</span>
+ </h3>
+ T.__new__(S, ...) -&gt; a new object with type S, a subtype of T
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+a new object with type S, a subtype of T
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__reduce__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__reduce__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ helper for pickle
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__reduce_ex__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__reduce_ex__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ helper for pickle
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ x.__repr__() &lt;==&gt; repr(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+repr(x)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__setattr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__setattr__('name', value) &lt;==&gt; x.name = value
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ x.__str__() &lt;==&gt; str(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+str(x)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/__builtin__.type-class.html b/docs/private/__builtin__.type-class.html
new file mode 100644
index 0000000..0f1957a
--- /dev/null
+++ b/docs/private/__builtin__.type-class.html
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>__builtin__.type</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;__builtin__ ::
+ Class&nbsp;type
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/__builtin__.type-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="__builtin__.type-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type type</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>type</b>
+</pre><br />
+
+<hr/>
+
+type(object) -&gt; the object's type type(name, bases, dict) -&gt; a
+new type
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__call__" class="summary-sig-name"><code>__call__</code></a>(<span class=summary-sig-arg>x</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__call__(...) &lt;==&gt; x(...)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>x</span>,
+ <span class=summary-sig-arg>y</span>)</span></code>
+<br />
+x.__cmp__(y) &lt;==&gt; cmp(x,y)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">list of immediate subclasses</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__subclasses__" class="summary-sig-name"><code>__subclasses__</code></a>()</span></code>
+<br />
+__subclasses__() -&gt; list of immediate subclasses</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#mro" class="summary-sig-name"><code>mro</code></a>()</span></code>
+<br />
+return a type's method resolution order</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__init__(...) initializes x; see x.__class__.__doc__ for
+signature</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td>
+ <td><a name="__base__"></a><b><code>__base__</code></b> = <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></b> = <span title="(&lt;type 'object'&gt;,)"><code>(&lt;type&nbsp;'object'&gt;,) </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></b> = <span title="420">420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></b> = <span title="132">132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></b> = <span title="21995">21995&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></b> = <span title="20">20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></b> = <span title="(&lt;type 'type'&gt;, &lt;type 'object'&gt;)"><code>(&lt;type&nbsp;'type'&gt;,&nbsp;&lt;type&nbsp;'object'&gt;) </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></b> = <span title="'type'"><code><span class="variable-quote">'</span>type<span class="variable-quote">'</span> </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></b> = <span title="184">184&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__call__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__call__</span>(<span class=sig-arg>x</span>,
+ <span class="sig-vararg">...</span>)</span>
+ <br /><i>(Call operator)</i>
+ </h3>
+ x.__call__(...) &lt;==&gt; x(...)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+x(...)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__cmp__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__cmp__</span>(<span class=sig-arg>x</span>,
+ <span class=sig-arg>y</span>)</span>
+ <br /><i>(Comparison operator)</i>
+ </h3>
+ x.__cmp__(y) &lt;==&gt; cmp(x,y)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+cmp(x,y)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__delattr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__delattr__('name') &lt;==&gt; del x.name
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__delattr__"><code>__builtin__.object.__delattr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__getattribute__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__getattribute__('name') &lt;==&gt; x.name
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__getattribute__"><code>__builtin__.object.__getattribute__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__hash__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Hashing function)</i>
+ </h3>
+ x.__hash__() &lt;==&gt; hash(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+hash(x)
+</pre>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__hash__"><code>__builtin__.object.__hash__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__new__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
+ <span class=sig-arg>S</span>,
+ <span class="sig-vararg">...</span>)</span>
+ </h3>
+ T.__new__(S, ...) -&gt; a new object with type S, a subtype of T
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+a new object with type S, a subtype of T
+</pre>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ x.__repr__() &lt;==&gt; repr(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+repr(x)
+</pre>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__setattr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__setattr__('name', value) &lt;==&gt; x.name = value
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__setattr__"><code>__builtin__.object.__setattr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__subclasses__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__subclasses__</span>()</span>
+ </h3>
+ __subclasses__() -&gt; list of immediate subclasses
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+list of immediate subclasses </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="mro"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">mro</span>()</span>
+ </h3>
+ return a type's method resolution order
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+list </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__bases__"></a>
+<h3>__bases__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="(&lt;type 'object'&gt;,)"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+(&lt;type 'object'&gt;,) </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__basicsize__"></a>
+<h3>__basicsize__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="420"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__dictoffset__"></a>
+<h3>__dictoffset__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="132"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__flags__"></a>
+<h3>__flags__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="21995"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+21995&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__itemsize__"></a>
+<h3>__itemsize__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="20"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__mro__"></a>
+<h3>__mro__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="(&lt;type 'type'&gt;, &lt;type 'object'&gt;)"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+(&lt;type 'type'&gt;, &lt;type 'object'&gt;) </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__name__"></a>
+<h3>__name__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'type'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>type<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__weakrefoffset__"></a>
+<h3>__weakrefoffset__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="184"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+184&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/epydoc.css b/docs/private/epydoc.css
new file mode 100644
index 0000000..46080bd
--- /dev/null
+++ b/docs/private/epydoc.css
@@ -0,0 +1,100 @@
+
+/* Body color */
+body { background: #ffffff; color: #000000; }
+
+/* Tables */
+table.summary, table.details, table.index
+ { background: #e8f0f8; color: #000000; }
+tr.summary, tr.details, tr.index
+ { background: #70b0f0; color: #000000;
+ text-align: left; font-size: 120%; }
+tr.group { background: #c0e0f8; color: #000000;
+ text-align: left; font-size: 120%;
+ font-style: italic; }
+
+/* Documentation page titles */
+h2.module { margin-top: 0.2em; }
+h2.class { margin-top: 0.2em; }
+
+/* Headings */
+h1.heading { font-size: +140%; font-style: italic;
+ font-weight: bold; }
+h2.heading { font-size: +125%; font-style: italic;
+ font-weight: bold; }
+h3.heading { font-size: +110%; font-style: italic;
+ font-weight: normal; }
+
+/* Base tree */
+pre.base-tree { font-size: 80%; margin: 0; }
+
+/* Details Sections */
+table.func-details { background: #e8f0f8; color: #000000;
+ border: 2px groove #c0d0d0;
+ padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
+h3.func-detail { background: transparent; color: #000000;
+ margin: 0 0 1em 0; }
+
+table.var-details { background: #e8f0f8; color: #000000;
+ border: 2px groove #c0d0d0;
+ padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
+h3.var-details { background: transparent; color: #000000;
+ margin: 0 0 1em 0; }
+
+/* Function signatures */
+.sig { background: transparent; color: #000000;
+ font-weight: bold; }
+.sig-name { background: transparent; color: #006080; }
+.sig-arg, .sig-kwarg, .sig-vararg
+ { background: transparent; color: #008060; }
+.sig-default { background: transparent; color: #602000; }
+.summary-sig { background: transparent; color: #000000; }
+.summary-sig-name { background: transparent; color: #204080; }
+.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg
+ { background: transparent; color: #008060; }
+
+/* Doctest blocks */
+.py-src { background: transparent; color: #000000; }
+.py-prompt { background: transparent; color: #005050;
+ font-weight: bold;}
+.py-string { background: transparent; color: #006030; }
+.py-comment { background: transparent; color: #003060; }
+.py-keyword { background: transparent; color: #600000; }
+.py-output { background: transparent; color: #404040; }
+pre.doctestblock { background: #f4faff; color: #000000;
+ padding: .5em; margin: 1em;
+ border: 1px solid #708890; }
+table pre.doctestblock
+ { background: #dce4ec; color: #000000;
+ padding: .5em; margin: 1em;
+ border: 1px solid #708890; }
+
+/* Variable values */
+pre.variable { background: #dce4ec; color: #000000;
+ padding: .5em; margin: 0;
+ border: 1px solid #708890; }
+.variable-linewrap { background: transparent; color: #604000; }
+.variable-ellipsis { background: transparent; color: #604000; }
+.variable-quote { background: transparent; color: #604000; }
+.re { background: transparent; color: #000000; }
+.re-char { background: transparent; color: #006030; }
+.re-op { background: transparent; color: #600000; }
+.re-group { background: transparent; color: #003060; }
+.re-ref { background: transparent; color: #404040; }
+
+/* Navigation bar */
+table.navbar { background: #a0c0ff; color: #0000ff;
+ border: 2px groove #c0d0d0; }
+th.navbar { background: #a0c0ff; color: #0000ff; }
+th.navselect { background: #70b0ff; color: #000000; }
+.nomargin { margin: 0; }
+
+/* Links */
+a:link { background: transparent; color: #0000ff; }
+a:visited { background: transparent; color: #204080; }
+a.navbar:link { background: transparent; color: #0000ff;
+ text-decoration: none; }
+a.navbar:visited { background: transparent; color: #204080;
+ text-decoration: none; }
+
+/* Lists */
+ul { margin-top: 0; }
diff --git a/docs/private/exceptions.Exception-class.html b/docs/private/exceptions.Exception-class.html
new file mode 100644
index 0000000..4b99d99
--- /dev/null
+++ b/docs/private/exceptions.Exception-class.html
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>exceptions.Exception</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;exceptions ::
+ Class&nbsp;Exception
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/exceptions.Exception-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="exceptions.Exception-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class Exception</h2>
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a>,
+ <a href="paramiko.SSHException-class.html"><code>SSHException</code></a>,
+ <a href="../private/paramiko.ber.BERException-class.html"><code>BERException</code></a>,
+ <a href="../private/paramiko.packet.NeedRekeyException-class.html"><code>NeedRekeyException</code></a></dd></dl>
+
+<hr/>
+
+Common base class for all exceptions.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__getitem__"></a><span class="summary-sig"><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/frames.html b/docs/private/frames.html
new file mode 100644
index 0000000..77678a0
--- /dev/null
+++ b/docs/private/frames.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
+<html>
+<head>
+ <title> API Documentation </title>
+</head>
+<frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="toc.html" name="moduleListFrame">
+ <frame src="toc-everything.html" name="moduleFrame">
+ </frameset>
+ <frame src="paramiko-module.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/docs/private/help.html b/docs/private/help.html
new file mode 100644
index 0000000..5aab6d0
--- /dev/null
+++ b/docs/private/help.html
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Help</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/help.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="help.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<center><h2> API Documentation </h2></center>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for this project. Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class. The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page. </p>
+
+<h2> Object Documentation </h2>
+
+ <p>Each <b>Package Documentation</b> page contains:
+ <ul>
+ <li> A description of the package. </li>
+ <li> A list of the modules and sub-packages contained by the
+ package. </li>
+ <li> A summary of the classes defined by the package. </li>
+ <li> A summary of the functions defined by the package. </li>
+ <li> A summary of the variables defined by the package. </li>
+ <li> A detailed description of each function defined by the
+ package. </li>
+ <li> A detailed description of each variable defined by the
+ package. </li>
+ </ul></p>
+
+ <p>Each <b>Module Documentation</b> page contains:
+ <ul>
+ <li> A description of the module. </li>
+ <li> A summary of the classes defined by the module. </li>
+ <li> A summary of the functions defined by the module. </li>
+ <li> A summary of the variables defined by the module. </li>
+ <li> A detailed description of each function defined by the
+ module. </li>
+ <li> A detailed description of each variable defined by the
+ module. </li>
+ </ul></p>
+
+ <p>Each <b>Class Documentation</b> page contains:
+ <ul>
+ <li> A class inheritance diagram. </li>
+ <li> A list of known subclasses. </li>
+ <li> A description of the class. </li>
+ <li> A summary of the methods defined by the class. </li>
+ <li> A summary of the instance variables defined by the class. </li>
+ <li> A summary of the class (static) variables defined by the
+ class. </li>
+ <li> A detailed description of each method defined by the
+ class. </li>
+ <li> A detailed description of each instance variable defined by the
+ class. </li>
+ <li> A detailed description of each class (static) variable defined
+ by the class. </li>
+ </ul></p>
+
+<h2> Project Documentation </h2>
+
+ <p> The <b>Trees</b> page contains the module and class hierarchies:
+ <ul>
+ <li> The <i>module hierarchy</i> lists every package and module, with
+ modules grouped into packages. At the top level, and within each
+ package, modules and sub-packages are listed alphabetically. </li>
+ <li> The <i>class hierarchy</i> lists every class, grouped by base
+ class. If a class has more than one base class, then it will be
+ listed under each base class. At the top level, and under each base
+ class, classes are listed alphabetically. </li>
+ </ul></p>
+
+ <p> The <b>Index</b> page contains indices of terms and
+ identifiers:
+ <ul>
+ <li> The <i>term index</i> lists every term indexed by any object's
+ documentation. For each term, the index provides links to each
+ place where the term is indexed. </li>
+ <li> The <i>identifier index</i> lists the (short) name of every package,
+ module, class, method, function, variable, and parameter. For each
+ identifier, the index provides a short description, and a link to
+ its documentation. </li>
+ </ul></p>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window. The upper-left frame displays the <i>project
+contents</i>, and the lower-left frame displays the <i>module
+contents</i>: </p>
+
+<center>
+<table class="summary" border="1" cellspacing="0" cellpadding="3">
+ <tr heigh="30%">
+ <td align="center">
+ <font size="-1">Project<br>Contents<hr>...</font></td>
+ <td align="center" rowspan="2" width="70%">
+ API<br>Documentation<br>Frame<br><br><br>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">
+ <font size="-1">Module<br>Contents<hr>&nbsp;<br>...<br>&nbsp;</font>
+ </td>
+ </tr>
+</table><br>
+</center>
+
+<p> The <b>project contents frame</b> contains a list of all packages
+and modules that are defined by the project. Clicking on an entry
+will display its contents in the module contents frame. Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <b>module contents frame</b> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package. Clicking on an entry will display its
+documentation in the API documentation frame. Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<b>frames</b>" and "<b>no frames</b>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages. The following table describes the labels
+on the navigation bar. Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+ <th>Label</th>
+ <th>Highlighted when...</th>
+ <th>Links to...</th>
+</tr>
+ <tr><td valign="top"><b>[Parent]</b></td>
+ <td valign="top"><i>(never highlighted)</i></td>
+ <td valign="top"> the parent of the current package </td></tr>
+ <tr><td valign="top"><b>[Package]</b></td>
+ <td valign="top">viewing a package</td>
+ <td valign="top">the package containing the current object
+ </td></tr>
+ <tr><td valign="top"><b>[Module]</b></td>
+ <td valign="top">viewing a module</td>
+ <td valign="top">the module containing the current object
+ </td></tr>
+ <tr><td valign="top"><b>[Class]</b></td>
+ <td valign="top">viewing a class </td>
+ <td valign="top">the class containing the current object</td></tr>
+ <tr><td valign="top"><b>[Trees]</b></td>
+ <td valign="top">viewing the trees page</td>
+ <td valign="top"> the trees page </td></tr>
+ <tr><td valign="top"><b>[Index]</b></td>
+ <td valign="top">viewing the index page</td>
+ <td valign="top"> the index page </td></tr>
+ <tr><td valign="top"><b>[Help]</b></td>
+ <td valign="top">viewing the help page</td>
+ <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<b>show private</b>" and "<b>hide private</b>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed. Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore. For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not. However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/index.html b/docs/private/index.html
new file mode 100644
index 0000000..77678a0
--- /dev/null
+++ b/docs/private/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
+<html>
+<head>
+ <title> API Documentation </title>
+</head>
+<frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="toc.html" name="moduleListFrame">
+ <frame src="toc-everything.html" name="moduleFrame">
+ </frameset>
+ <frame src="paramiko-module.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/docs/private/indices.html b/docs/private/indices.html
new file mode 100644
index 0000000..752a39a
--- /dev/null
+++ b/docs/private/indices.html
@@ -0,0 +1,1635 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Index</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Index&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/indices.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="indices.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+<br />
+
+<!-- =========== START OF IDENTIFIER INDEX =========== -->
+<table class="index" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="index">
+ <th colspan="2">Identifier Index</th></tr>
+ <tr><td width="15%"><a href="../private/paramiko-module.html#__author__"><code>__author__</code></a></td>
+ <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td>
+ <td>Class in module <code>__builtin__</code></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading.Thread-class.html#__bootstrap"><code>__bootstrap</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__call__"><code>__call__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.compress.ZlibCompressor-class.html#__call__"><code>__call__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>paramiko.compress.ZlibCompressor</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.compress.ZlibDecompressor-class.html#__call__"><code>__call__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>paramiko.compress.ZlibDecompressor</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td>
+ <td>Class in module <code>__builtin__</code></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__cmp__"><code>__cmp__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#__cmp__"><code>__cmp__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko-module.html#__date__"><code>__date__</code></a></td>
+ <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__delattr__"><code>__delattr__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__delattr__"><code>__delattr__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading.Thread-class.html#__delete"><code>__delete</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__getattribute__"><code>__getattribute__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__getattribute__"><code>__getattribute__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="exceptions.Exception-class.html#__getitem__"><code>__getitem__</code></a></td>
+ <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__hash__"><code>__hash__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__hash__"><code>__hash__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__hash__"><code>__hash__</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__hash__"><code>__hash__</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="exceptions.Exception-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Agent-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>paramiko.channel.ChannelStderrFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.compress.ZlibCompressor-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>paramiko.compress.ZlibCompressor</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.compress.ZlibDecompressor-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>paramiko.compress.ZlibDecompressor</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.Formatter-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.logging22.Formatter-class.html"><code>paramiko.logging22.Formatter</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.StreamHandler-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.logging22.StreamHandler-class.html"><code>paramiko.logging22.StreamHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>paramiko.ssh_exception.PartialAuthentication</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading._Verbose-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="../private/threading._Verbose-class.html"><code>threading._Verbose</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__iter__"><code>__iter__</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko-module.html#__license__"><code>__license__</code></a></td>
+ <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__new__"><code>__new__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__new__"><code>__new__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce__"><code>__reduce__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce_ex__"><code>__reduce_ex__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__setattr__"><code>__setattr__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__setattr__"><code>__setattr__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__slots__"><code>__slots__</code></a></td>
+ <td>Variable in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading.Thread-class.html#__stop"><code>__stop</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="exceptions.Exception-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__subclasses__"><code>__subclasses__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko-module.html#__version__"><code>__version__</code></a></td>
+ <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko-module.html#__version_info__"><code>__version_info__</code></a></td>
+ <td>Variable in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_activate_inbound"><code>_activate_inbound</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_activate_outbound"><code>_activate_outbound</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.transport-module.html#_active_threads"><code>_active_threads</code></a></td>
+ <td>Variable in module <a href="paramiko.transport-module.html"><code>paramiko.transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Message-class.html#_add"><code>_add</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_adjust_cwd"><code>_adjust_cwd</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_async_request"><code>_async_request</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_async_response"><code>_async_response</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_auth_trigger"><code>_auth_trigger</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_build_packet"><code>_build_packet</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_channel_handler_table"><code>_channel_handler_table</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_check_add_window"><code>_check_add_window</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_check_banner"><code>_check_banner</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_check_exception"><code>_check_exception</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_check_file"><code>_check_file</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_check_keepalive"><code>_check_keepalive</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_cipher_info"><code>_cipher_info</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_CLIENT_ID"><code>_CLIENT_ID</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_close_internal"><code>_close_internal</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_compression_info"><code>_compression_info</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_compute_key"><code>_compute_key</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_convert_pflags"><code>_convert_pflags</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_convert_status"><code>_convert_status</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_debug_str"><code>_debug_str</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_disconnect_no_more_auth"><code>_disconnect_no_more_auth</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_disconnect_service_not_available"><code>_disconnect_service_not_available</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_expect_packet"><code>_expect_packet</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_feed"><code>_feed</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_feed_extended"><code>_feed_extended</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_finish_responses"><code>_finish_responses</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_APPEND"><code>_FLAG_APPEND</code></a></td>
+ <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_BINARY"><code>_FLAG_BINARY</code></a></td>
+ <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_BUFFERED"><code>_FLAG_BUFFERED</code></a></td>
+ <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_LINE_BUFFERED"><code>_FLAG_LINE_BUFFERED</code></a></td>
+ <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_READ"><code>_FLAG_READ</code></a></td>
+ <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_UNIVERSAL_NEWLINE"><code>_FLAG_UNIVERSAL_NEWLINE</code></a></td>
+ <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.file-module.html#_FLAG_WRITE"><code>_FLAG_WRITE</code></a></td>
+ <td>Variable in module <a href="paramiko.file-module.html"><code>paramiko.file</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_from_msg"><code>_from_msg</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.DSSKey-class.html#_from_private_key_file"><code>_from_private_key_file</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.RSAKey-class.html#_from_private_key_file"><code>_from_private_key_file</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.util-module.html#_g_thread_counter"><code>_g_thread_counter</code></a></td>
+ <td>Variable in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.util-module.html#_g_thread_ids"><code>_g_thread_ids</code></a></td>
+ <td>Variable in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.util-module.html#_g_thread_lock"><code>_g_thread_lock</code></a></td>
+ <td>Variable in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.primes-module.html#_generate_prime"><code>_generate_prime</code></a></td>
+ <td>Function in module <a href="../private/paramiko.primes-module.html"><code>paramiko.primes</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_generate_x"><code>_generate_x</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#_generate_x"><code>_generate_x</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_get_cipher"><code>_get_cipher</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_ciphers"><code>_get_ciphers</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_compression"><code>_get_compression</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_digests"><code>_get_digests</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_kex"><code>_get_kex</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_get_key_types"><code>_get_key_types</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_get_modulus_pack"><code>_get_modulus_pack</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPHandle-class.html#_get_name"><code>_get_name</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPHandle-class.html#_get_next_files"><code>_get_next_files</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_get_session_blob"><code>_get_session_blob</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_get_size"><code>_get_size</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_get_size"><code>_get_size</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_get_subsystem_handler"><code>_get_subsystem_handler</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_handle_close"><code>_handle_close</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_handle_eof"><code>_handle_eof</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_handle_request"><code>_handle_request</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_handler_table"><code>_handler_table</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_handler_table"><code>_handler_table</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.sftp_server-module.html#_hash_class"><code>_hash_class</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp_server-module.html"><code>paramiko.sftp_server</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_interactive_query"><code>_interactive_query</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.transport-module.html#_join_lingering_threads"><code>_join_lingering_threads</code></a></td>
+ <td>Function in module <a href="paramiko.transport-module.html"><code>paramiko.transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_kex_info"><code>_kex_info</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_key_info"><code>_key_info</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_log"><code>_log</code></a></td>
+ <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_log"><code>_log</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_log"><code>_log</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_log"><code>_log</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#_logger"><code>_logger</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_mac_info"><code>_mac_info</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_modulus_pack"><code>_modulus_pack</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP"><code>_MSG_KEXDH_GEX_GROUP</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT"><code>_MSG_KEXDH_GEX_INIT</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY"><code>_MSG_KEXDH_GEX_REPLY</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST"><code>_MSG_KEXDH_GEX_REQUEST</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_INIT"><code>_MSG_KEXDH_INIT</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY"><code>_MSG_KEXDH_REPLY</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_negotiate_keys"><code>_negotiate_keys</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading._Verbose-class.html#_note"><code>_note</code></a></td>
+ <td>Method in class <a href="../private/threading._Verbose-class.html"><code>threading._Verbose</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_open_folder"><code>_open_folder</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_pack"><code>_pack</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_channel_open"><code>_parse_channel_open</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_channel_open_failure"><code>_parse_channel_open_failure</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_channel_open_success"><code>_parse_channel_open_success</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_debug"><code>_parse_debug</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_disconnect"><code>_parse_disconnect</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_global_request"><code>_parse_global_request</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_kex_init"><code>_parse_kex_init</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_group"><code>_parse_kexdh_gex_group</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_init"><code>_parse_kexdh_gex_init</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_reply"><code>_parse_kexdh_gex_reply</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#_parse_kexdh_gex_request"><code>_parse_kexdh_gex_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#_parse_kexdh_init"><code>_parse_kexdh_init</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#_parse_kexdh_reply"><code>_parse_kexdh_reply</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html#_parse_modulus"><code>_parse_modulus</code></a></td>
+ <td>Method in class <a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_newkeys"><code>_parse_newkeys</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_request_failure"><code>_parse_request_failure</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_parse_request_success"><code>_parse_request_success</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_service_accept"><code>_parse_service_accept</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_service_request"><code>_parse_service_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_banner"><code>_parse_userauth_banner</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_failure"><code>_parse_userauth_failure</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_info_request"><code>_parse_userauth_info_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_info_response"><code>_parse_userauth_info_response</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_request"><code>_parse_userauth_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_parse_userauth_success"><code>_parse_userauth_success</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.util-module.html#_pfilter"><code>_pfilter</code></a></td>
+ <td>Variable in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.RSAKey-class.html#_pkcs1imify"><code>_pkcs1imify</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_ciphers"><code>_preferred_ciphers</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_compression"><code>_preferred_compression</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_kex"><code>_preferred_kex</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_keys"><code>_preferred_keys</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_preferred_macs"><code>_preferred_macs</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_prefetch"><code>_prefetch</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_process"><code>_process</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_PROTO_ID"><code>_PROTO_ID</code></a></td>
+ <td>Variable in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_py22_read_all"><code>_py22_read_all</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_py22_read_timeout"><code>_py22_read_timeout</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_read"><code>_read</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html#_read"><code>_read</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_read"><code>_read</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#_read"><code>_read</code></a></td>
+ <td>Method in class <a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>paramiko.channel.ChannelStderrFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Agent-class.html#_read_all"><code>_read_all</code></a></td>
+ <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_read_all"><code>_read_all</code></a></td>
+ <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_read_folder"><code>_read_folder</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_read_packet"><code>_read_packet</code></a></td>
+ <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_read_prefetch"><code>_read_prefetch</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_read_private_key_file"><code>_read_private_key_file</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_read_response"><code>_read_response</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_read_timeout"><code>_read_timeout</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_record_newline"><code>_record_newline</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPClient-class.html#_request"><code>_request</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_request_auth"><code>_request_auth</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_request_failed"><code>_request_failed</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_request_success"><code>_request_success</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_response"><code>_response</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.primes-module.html#_roll_random"><code>_roll_random</code></a></td>
+ <td>Function in module <a href="../private/paramiko.primes-module.html"><code>paramiko.primes</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SubsystemHandler-class.html#_run"><code>_run</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_rwx"><code>_rwx</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#_send_auth_result"><code>_send_auth_result</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_send_eof"><code>_send_eof</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_send_handle_response"><code>_send_handle_response</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_send_kex_init"><code>_send_kex_init</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Agent-class.html#_send_message"><code>_send_message</code></a></td>
+ <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_send_message"><code>_send_message</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_send_packet"><code>_send_packet</code></a></td>
+ <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_send_server_version"><code>_send_server_version</code></a></td>
+ <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServer-class.html#_send_status"><code>_send_status</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_send_user_message"><code>_send_user_message</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_send_version"><code>_send_version</code></a></td>
+ <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set"><code>_set</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_ciphers"><code>_set_ciphers</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_set_closed"><code>_set_closed</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_compression"><code>_set_compression</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading.Thread-class.html#_set_daemon"><code>_set_daemon</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_digests"><code>_set_digests</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPHandle-class.html#_set_files"><code>_set_files</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_set_K_H"><code>_set_K_H</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_kex"><code>_set_kex</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_set_key_types"><code>_set_key_types</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_set_mode"><code>_set_mode</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPHandle-class.html#_set_name"><code>_set_name</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_set_remote_channel"><code>_set_remote_channel</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_set_transport"><code>_set_transport</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_set_window"><code>_set_window</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading.Thread-class.html#__initialized"><code>__initialized</code></a></td>
+ <td>Variable in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading.Thread-class.html#__initialized"><code>__initialized</code></a></td>
+ <td>Variable in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading.Thread-class.html#__initialized"><code>__initialized</code></a></td>
+ <td>Variable in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading.Thread-class.html#__initialized"><code>__initialized</code></a></td>
+ <td>Variable in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.sftp_client-module.html#_to_unicode"><code>_to_unicode</code></a></td>
+ <td>Function in module <a href="paramiko.sftp_client-module.html"><code>paramiko.sftp_client</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SecurityOptions-class.html#_transport"><code>_transport</code></a></td>
+ <td>Variable in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#_trigger_rekey"><code>_trigger_rekey</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_unlink"><code>_unlink</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_unlink_channel"><code>_unlink_channel</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPAttributes-class.html#_unpack"><code>_unpack</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a></td>
+ <td>Class in module <code>threading</code></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Transport-class.html#_verify_key"><code>_verify_key</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.sftp-module.html#_VERSION"><code>_VERSION</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_wait_for_send_window"><code>_wait_for_send_window</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Channel-class.html#_window_adjust"><code>_window_adjust</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_write"><code>_write</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html#_write"><code>_write</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPFile-class.html#_write"><code>_write</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#_write"><code>_write</code></a></td>
+ <td>Method in class <a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>paramiko.channel.ChannelStderrFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html#_write_all"><code>_write_all</code></a></td>
+ <td>Method in class <a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BufferedFile-class.html#_write_all"><code>_write_all</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#_write_private_key_file"><code>_write_private_key_file</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#abort"><code>abort</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#accept"><code>accept</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add"><code>add</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_boolean"><code>add_boolean</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_byte"><code>add_byte</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_bytes"><code>add_bytes</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_int"><code>add_int</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_int64"><code>add_int64</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_list"><code>add_list</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_mpint"><code>add_mpint</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html#add_prompt"><code>add_prompt</code></a></td>
+ <td>Method in class <a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#add_server_key"><code>add_server_key</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_string"><code>add_string</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#addFilter"><code>addFilter</code></a></td>
+ <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#addHandler"><code>addHandler</code></a></td>
+ <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Agent-class.html"><code>Agent</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html"><code>agent</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#allowed_types"><code>allowed_types</code></a></td>
+ <td>Variable in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html#allowed_types"><code>allowed_types</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>paramiko.ssh_exception.PartialAuthentication</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#AUTH_FAILED"><code>AUTH_FAILED</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.auth_handler-module.html"><code>auth_handler</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#auth_interactive"><code>auth_interactive</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_interactive"><code>auth_interactive</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#auth_none"><code>auth_none</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_none"><code>auth_none</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#AUTH_PARTIALLY_SUCCESSFUL"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#auth_password"><code>auth_password</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_password"><code>auth_password</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#auth_publickey"><code>auth_publickey</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_publickey"><code>auth_publickey</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#AUTH_SUCCESSFUL"><code>AUTH_SUCCESSFUL</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html"><code>AuthHandler</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber-module.html"><code>ber</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html"><code>BER</code></a></td>
+ <td>Class in module <a href="../private/paramiko.ber-module.html"><code>paramiko.ber</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BERException-class.html"><code>BERException</code></a></td>
+ <td>Class in module <a href="../private/paramiko.ber-module.html"><code>paramiko.ber</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#bit_length"><code>bit_length</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#can_sign"><code>can_sign</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#can_sign"><code>can_sign</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#can_sign"><code>can_sign</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#canonicalize"><code>canonicalize</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html"><code>Channel</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.channel-module.html"><code>channel</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ChannelFile-class.html"><code>ChannelFile</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>ChannelStderrFile</code></a></td>
+ <td>Class in module <a href="../private/paramiko.channel-module.html"><code>paramiko.channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#chattr"><code>chattr</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#chattr"><code>chattr</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chdir"><code>chdir</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#check"><code>check</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_interactive"><code>check_auth_interactive</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_interactive_response"><code>check_auth_interactive_response</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_none"><code>check_auth_none</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_password"><code>check_auth_password</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_auth_publickey"><code>check_auth_publickey</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_exec_request"><code>check_channel_exec_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_pty_request"><code>check_channel_pty_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_request"><code>check_channel_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_shell_request"><code>check_channel_shell_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_subsystem_request"><code>check_channel_subsystem_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_channel_window_change_request"><code>check_channel_window_change_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#check_global_request"><code>check_global_request</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chmod"><code>chmod</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chown"><code>chown</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#ciphers"><code>ciphers</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#clear"><code>clear</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#clear"><code>clear</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Agent-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_ATTRS"><code>CMD_ATTRS</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_CLOSE"><code>CMD_CLOSE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_DATA"><code>CMD_DATA</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_EXTENDED"><code>CMD_EXTENDED</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY"><code>CMD_EXTENDED_REPLY</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_FSETSTAT"><code>CMD_FSETSTAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_FSTAT"><code>CMD_FSTAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_HANDLE"><code>CMD_HANDLE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_INIT"><code>CMD_INIT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_LSTAT"><code>CMD_LSTAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_MKDIR"><code>CMD_MKDIR</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_NAME"><code>CMD_NAME</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_NAMES"><code>CMD_NAMES</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_OPEN"><code>CMD_OPEN</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_OPENDIR"><code>CMD_OPENDIR</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READ"><code>CMD_READ</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READDIR"><code>CMD_READDIR</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READLINK"><code>CMD_READLINK</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_REALPATH"><code>CMD_REALPATH</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_REMOVE"><code>CMD_REMOVE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_RENAME"><code>CMD_RENAME</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_RMDIR"><code>CMD_RMDIR</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_SETSTAT"><code>CMD_SETSTAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_STAT"><code>CMD_STAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_STATUS"><code>CMD_STATUS</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_SYMLINK"><code>CMD_SYMLINK</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_VERSION"><code>CMD_VERSION</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_WRITE"><code>CMD_WRITE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html"><code>common</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.compress-module.html"><code>compress</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#compression"><code>compression</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#connect"><code>connect</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#CONNECTION_FAILED_CODE"><code>CONNECTION_FAILED_CODE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#convert_errno"><code>convert_errno</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#CRITICAL"><code>CRITICAL</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#CRITICAL"><code>CRITICAL</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#DEBUG"><code>DEBUG</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#DEBUG"><code>DEBUG</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#decode"><code>decode</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#decode_next"><code>decode_next</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#decode_sequence"><code>decode_sequence</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#deflate_long"><code>deflate_long</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#digests"><code>digests</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER"><code>DISCONNECT_AUTH_CANCELLED_BY_USER</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE"><code>DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#DISCONNECT_SERVICE_NOT_AVAILABLE"><code>DISCONNECT_SERVICE_NOT_AVAILABLE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#encode"><code>encode</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#encode_sequence"><code>encode_sequence</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ber.BER-class.html#encode_tlv"><code>encode_tlv</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#ERROR"><code>ERROR</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#ERROR"><code>ERROR</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><code>exc_info</code></td>
+ <td>Function in module <code>sys</code></td></tr>
+ <tr><td width="15%"><a href="exceptions.Exception-class.html"><code>Exception</code></a></td>
+ <td>Class in module <code>exceptions</code></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#exec_command"><code>exec_command</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#file"><code>file</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.file-module.html"><code>file</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#fileno"><code>fileno</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#fileno"><code>fileno</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#fileno"><code>fileno</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util.PFilter-class.html#filter"><code>filter</code></a></td>
+ <td>Method in class <a href="paramiko.util.PFilter-class.html"><code>paramiko.util.PFilter</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#finish_subsystem"><code>finish_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#finish_subsystem"><code>finish_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_AMTIME"><code>FLAG_AMTIME</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_EXTENDED"><code>FLAG_EXTENDED</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><code>FLAG_PERMISSIONS</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_SIZE"><code>FLAG_SIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><code>FLAG_UIDGID</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#flush"><code>flush</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#format_binary"><code>format_binary</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#format_binary_line"><code>format_binary_line</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#format_binary_weird"><code>format_binary_weird</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.Formatter-class.html"><code>Formatter</code></a></td>
+ <td>Class in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#from_private_key_file"><code>from_private_key_file</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#from_stat"><code>from_stat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#from_transport"><code>from_transport</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html#G"><code>G</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#generate"><code>generate</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#generate"><code>generate</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#generate_key_bytes"><code>generate_key_bytes</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#get"><code>get</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html#get_allowed_auths"><code>get_allowed_auths</code></a></td>
+ <td>Method in class <a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#get_base64"><code>get_base64</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#get_bits"><code>get_bits</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#get_bits"><code>get_bits</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#get_bits"><code>get_bits</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_boolean"><code>get_boolean</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_byte"><code>get_byte</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_bytes"><code>get_bytes</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_exception"><code>get_exception</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#get_fingerprint"><code>get_fingerprint</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#get_hexdump"><code>get_hexdump</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_hexdump"><code>get_hexdump</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#get_id"><code>get_id</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_int"><code>get_int</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_int64"><code>get_int64</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Agent-class.html#get_keys"><code>get_keys</code></a></td>
+ <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_list"><code>get_list</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_log_channel"><code>get_log_channel</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#get_logger"><code>get_logger</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#get_mac_size_in"><code>get_mac_size_in</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#get_mac_size_out"><code>get_mac_size_out</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html#get_modulus"><code>get_modulus</code></a></td>
+ <td>Method in class <a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_mpint"><code>get_mpint</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#get_pty"><code>get_pty</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_remainder"><code>get_remainder</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_remote_server_key"><code>get_remote_server_key</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_security_options"><code>get_security_options</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#get_server"><code>get_server</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_server_key"><code>get_server_key</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_so_far"><code>get_so_far</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_string"><code>get_string</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#get_thread_id"><code>get_thread_id</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#get_transport"><code>get_transport</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#get_username"><code>get_username</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_username"><code>get_username</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#getcwd"><code>getcwd</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#getLogger"><code>getLogger</code></a></td>
+ <td>Function in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#getName"><code>getName</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#gettimeout"><code>gettimeout</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#gettimeout"><code>gettimeout</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#global_request"><code>global_request</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#hexify"><code>hexify</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#inflate_long"><code>inflate_long</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#INFO"><code>INFO</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#INFO"><code>INFO</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a></td>
+ <td>Class in module <a href="paramiko.server-module.html"><code>paramiko.server</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#invoke_shell"><code>invoke_shell</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#invoke_subsystem"><code>invoke_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#is_active"><code>is_active</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#is_authenticated"><code>is_authenticated</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#is_authenticated"><code>is_authenticated</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#isAlive"><code>isAlive</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#isDaemon"><code>isDaemon</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#join"><code>join</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#kex"><code>kex</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex-module.html"><code>kex_gex</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html"><code>kex_group1</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html"><code>KexGex</code></a></td>
+ <td>Class in module <a href="../private/paramiko.kex_gex-module.html"><code>paramiko.kex_gex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>KexGroup1</code></a></td>
+ <td>Class in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#key_types"><code>key_types</code></a></td>
+ <td>Class in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#list_folder"><code>list_folder</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#listdir"><code>listdir</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#listdir_attr"><code>listdir_attr</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#load_host_keys"><code>load_host_keys</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#load_server_moduli"><code>load_server_moduli</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#log"><code>log</code></a></td>
+ <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#log_to_file"><code>log_to_file</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html"><code>logger</code></a></td>
+ <td>Class in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22-module.html"><code>logging22</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#lookup_ssh_host_config"><code>lookup_ssh_host_config</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#lstat"><code>lstat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#lstat"><code>lstat</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe-module.html#make_pipe"><code>make_pipe</code></a></td>
+ <td>Function in module <a href="../private/paramiko.pipe-module.html"><code>paramiko.pipe</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#makefile"><code>makefile</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#makefile_stderr"><code>makefile_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#max_bits"><code>max_bits</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><code>MAX_REQUEST_SIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html"><code>Message</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.message-module.html"><code>message</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#min_bits"><code>min_bits</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#MIN_PACKET_SIZE"><code>MIN_PACKET_SIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#mkdir"><code>mkdir</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#mkdir"><code>mkdir</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#mod_inverse"><code>mod_inverse</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html"><code>ModulusPack</code></a></td>
+ <td>Class in module <a href="../private/paramiko.primes-module.html"><code>paramiko.primes</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#mro"><code>mro</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_CLOSE"><code>MSG_CHANNEL_CLOSE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_DATA"><code>MSG_CHANNEL_DATA</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_EOF"><code>MSG_CHANNEL_EOF</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA"><code>MSG_CHANNEL_EXTENDED_DATA</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_FAILURE"><code>MSG_CHANNEL_FAILURE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN"><code>MSG_CHANNEL_OPEN</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE"><code>MSG_CHANNEL_OPEN_FAILURE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS"><code>MSG_CHANNEL_OPEN_SUCCESS</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_REQUEST"><code>MSG_CHANNEL_REQUEST</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_SUCCESS"><code>MSG_CHANNEL_SUCCESS</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST"><code>MSG_CHANNEL_WINDOW_ADJUST</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_DEBUG"><code>MSG_DEBUG</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_DISCONNECT"><code>MSG_DISCONNECT</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_GLOBAL_REQUEST"><code>MSG_GLOBAL_REQUEST</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_IGNORE"><code>MSG_IGNORE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_KEXINIT"><code>MSG_KEXINIT</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_NAMES"><code>MSG_NAMES</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_NEWKEYS"><code>MSG_NEWKEYS</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_REQUEST_FAILURE"><code>MSG_REQUEST_FAILURE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_REQUEST_SUCCESS"><code>MSG_REQUEST_SUCCESS</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_SERVICE_ACCEPT"><code>MSG_SERVICE_ACCEPT</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_SERVICE_REQUEST"><code>MSG_SERVICE_REQUEST</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_UNIMPLEMENTED"><code>MSG_UNIMPLEMENTED</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_BANNER"><code>MSG_USERAUTH_BANNER</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_FAILURE"><code>MSG_USERAUTH_FAILURE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST"><code>MSG_USERAUTH_INFO_REQUEST</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_RESPONSE"><code>MSG_USERAUTH_INFO_RESPONSE</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_PK_OK"><code>MSG_USERAUTH_PK_OK</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_REQUEST"><code>MSG_USERAUTH_REQUEST</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#MSG_USERAUTH_SUCCESS"><code>MSG_USERAUTH_SUCCESS</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#name"><code>name</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#name"><code>name</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#need_rekey"><code>need_rekey</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.packet.NeedRekeyException-class.html"><code>NeedRekeyException</code></a></td>
+ <td>Class in module <a href="../private/paramiko.packet-module.html"><code>paramiko.packet</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#next"><code>next</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#normalize"><code>normalize</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td>
+ <td>Class in module <code>__builtin__</code></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#open"><code>open</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#open_channel"><code>open_channel</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#open_session"><code>open_session</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#open_sftp_client"><code>open_sftp_client</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1-module.html#P"><code>P</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.packet-module.html"><code>packet</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html"><code>Packetizer</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko-module.html"><code>paramiko</code></a></td>
+ <td>Package</td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#parse_next"><code>parse_next</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#parse_next"><code>parse_next</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#parse_ssh_config"><code>parse_ssh_config</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>PartialAuthentication</code></a></td>
+ <td>Class in module <a href="../private/paramiko.ssh_exception-module.html"><code>paramiko.ssh_exception</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a></td>
+ <td>Class in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe-module.html"><code>pipe</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html"><code>PKey</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.pkey-module.html"><code>pkey</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html"><code>PosixPipe</code></a></td>
+ <td>Class in module <a href="../private/paramiko.pipe-module.html"><code>paramiko.pipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#preferred_bits"><code>preferred_bits</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#prefetch"><code>prefetch</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.primes-module.html"><code>primes</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#put"><code>put</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#read"><code>read</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#read"><code>read</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#read_all"><code>read_all</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.primes.ModulusPack-class.html#read_file"><code>read_file</code></a></td>
+ <td>Method in class <a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#read_message"><code>read_message</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#readline"><code>readline</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#readline"><code>readline</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#readlines"><code>readlines</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#readlink"><code>readlink</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#readlink"><code>readlink</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv"><code>recv</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_exit_status"><code>recv_exit_status</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_ready"><code>recv_ready</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_stderr"><code>recv_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_stderr_ready"><code>recv_stderr_ready</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#REKEY_BYTES"><code>REKEY_BYTES</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#REKEY_PACKETS"><code>REKEY_PACKETS</code></a></td>
+ <td>Variable in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#remove"><code>remove</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#remove"><code>remove</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#rename"><code>rename</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#rename"><code>rename</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#renegotiate_keys"><code>renegotiate_keys</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#resize_pty"><code>resize_pty</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#rewind"><code>rewind</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#rmdir"><code>rmdir</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#rmdir"><code>rmdir</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#run"><code>run</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#run"><code>run</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#safe_string"><code>safe_string</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#seek"><code>seek</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#seek"><code>seek</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#send"><code>send</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#send_exit_status"><code>send_exit_status</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#send_ignore"><code>send_ignore</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#send_message"><code>send_message</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#send_stderr"><code>send_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#sendall"><code>sendall</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#sendall_stderr"><code>sendall_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.server-module.html"><code>server</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ServerInterface-class.html"><code>ServerInterface</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#session_ended"><code>session_ended</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#session_started"><code>session_started</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#set"><code>set</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#set"><code>set</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#set_combine_stderr"><code>set_combine_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#set_file_attr"><code>set_file_attr</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.PosixPipe-class.html#set_forever"><code>set_forever</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html#set_forever"><code>set_forever</code></a></td>
+ <td>Method in class <a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_hexdump"><code>set_hexdump</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#set_hexdump"><code>set_hexdump</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_inbound_cipher"><code>set_inbound_cipher</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_inbound_compressor"><code>set_inbound_compressor</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_keepalive"><code>set_keepalive</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#set_keepalive"><code>set_keepalive</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_log"><code>set_log</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#set_log_channel"><code>set_log_channel</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#set_name"><code>set_name</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_outbound_cipher"><code>set_outbound_cipher</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#set_outbound_compressor"><code>set_outbound_compressor</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#set_pipelined"><code>set_pipelined</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#set_subsystem_handler"><code>set_subsystem_handler</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#setblocking"><code>setblocking</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#setblocking"><code>setblocking</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#setDaemon"><code>setDaemon</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.StreamHandler-class.html#setFormatter"><code>setFormatter</code></a></td>
+ <td>Method in class <a href="../private/paramiko.logging22.StreamHandler-class.html"><code>paramiko.logging22.StreamHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.logger-class.html#setLevel"><code>setLevel</code></a></td>
+ <td>Method in class <a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#setName"><code>setName</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#settimeout"><code>settimeout</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#settimeout"><code>settimeout</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTP-class.html"><code>SFTP</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html"><code>sftp</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE"><code>SFTP_BAD_MESSAGE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST"><code>SFTP_CONNECTION_LOST</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_DESC"><code>SFTP_DESC</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_EOF"><code>SFTP_EOF</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FAILURE"><code>SFTP_FAILURE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_APPEND"><code>SFTP_FLAG_APPEND</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_CREATE"><code>SFTP_FLAG_CREATE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_EXCL"><code>SFTP_FLAG_EXCL</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_READ"><code>SFTP_FLAG_READ</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC"><code>SFTP_FLAG_TRUNC</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE"><code>SFTP_FLAG_WRITE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION"><code>SFTP_NO_CONNECTION</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE"><code>SFTP_NO_SUCH_FILE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_OK"><code>SFTP_OK</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED"><code>SFTP_OP_UNSUPPORTED</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED"><code>SFTP_PERMISSION_DENIED</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html"><code>SFTPServerInterface</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown"><code>shutdown</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown_read"><code>shutdown_read</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown_write"><code>shutdown_write</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td>
+ <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER"><code>SSH2_AGENT_IDENTITIES_ANSWER</code></a></td>
+ <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE"><code>SSH2_AGENT_SIGN_RESPONSE</code></a></td>
+ <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES"><code>SSH2_AGENTC_REQUEST_IDENTITIES</code></a></td>
+ <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST"><code>SSH2_AGENTC_SIGN_REQUEST</code></a></td>
+ <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.ssh_exception-module.html"><code>ssh_exception</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SSHException-class.html"><code>SSHException</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#start"><code>start</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#start_client"><code>start_client</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_gex.KexGex-class.html#start_kex"><code>start_kex</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.kex_group1.KexGroup1-class.html#start_kex"><code>start_kex</code></a></td>
+ <td>Method in class <a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#start_server"><code>start_server</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#start_subsystem"><code>start_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#start_subsystem"><code>start_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#stat"><code>stat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#stat"><code>stat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#stat"><code>stat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#stat"><code>stat</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#stop_thread"><code>stop_thread</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22.StreamHandler-class.html"><code>StreamHandler</code></a></td>
+ <td>Class in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#symlink"><code>symlink</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.SFTPServerInterface-class.html#symlink"><code>symlink</code></a></td>
+ <td>Method in class <a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#tb_strings"><code>tb_strings</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#tell"><code>tell</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html"><code>Thread</code></a></td>
+ <td>Class in module <code>threading</code></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html"><code>Transport</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.transport-module.html"><code>transport</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td>
+ <td>Class in module <code>__builtin__</code></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#unhexify"><code>unhexify</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#use_compression"><code>use_compression</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html"><code>util</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#utime"><code>utime</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.AuthHandler-class.html#wait_for_response"><code>wait_for_response</code></a></td>
+ <td>Method in class <a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.common-module.html#WARNING"><code>WARNING</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.common-module.html"><code>paramiko.common</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.logging22-module.html#WARNING"><code>WARNING</code></a></td>
+ <td>Variable in module <a href="../private/paramiko.logging22-module.html"><code>paramiko.logging22</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>WindowsPipe</code></a></td>
+ <td>Class in module <a href="../private/paramiko.pipe-module.html"><code>paramiko.pipe</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#write"><code>write</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#write"><code>write</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.Packetizer-class.html#write_all"><code>write_all</code></a></td>
+ <td>Method in class <a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td>
+ <td>Method in class <a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#writelines"><code>writelines</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#xreadlines"><code>xreadlines</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>ZlibCompressor</code></a></td>
+ <td>Class in module <a href="../private/paramiko.compress-module.html"><code>paramiko.compress</code></a></td></tr>
+ <tr><td width="15%"><a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>ZlibDecompressor</code></a></td>
+ <td>Class in module <a href="../private/paramiko.compress-module.html"><code>paramiko.compress</code></a></td></tr>
+</table>
+<br />
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Index&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko-module.html b/docs/private/paramiko-module.html
new file mode 100644
index 0000000..4e9f899
--- /dev/null
+++ b/docs/private/paramiko-module.html
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Package&nbsp;paramiko
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF PACKAGE DESCRIPTION =========== -->
+<h2 class="package">Package paramiko</h2>
+
+<p><i>Paramiko</i> (a combination of the esperanto words for
+&quot;paranoid&quot; and &quot;friend&quot;) is a module for python 2.3
+or greater that implements the SSH2 protocol for secure (encrypted and
+authenticated) connections to remote machines. Unlike SSL (aka TLS), the
+SSH2 protocol does not require heirarchical certificates signed by a
+powerful central authority. You may know SSH2 as the protocol that
+replaced <code>telnet</code> and <code>rsh</code> for secure access to
+remote shells, but the protocol also includes the ability to open
+arbitrary channels to remote services across an encrypted tunnel. (This
+is how <code>sftp</code> works, for example.)</p>
+<p>To use this package, pass a socket (or socket-like object) to a <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>, and use <a
+href="paramiko.Transport-class.html#start_server"
+class="link"><code>start_server</code></a> or <a
+href="paramiko.Transport-class.html#start_client"
+class="link"><code>start_client</code></a> to negoatite with the remote
+host as either a server or client. As a client, you are responsible for
+authenticating using a password or private key, and checking the server's
+host key. <i>(Key signature and verification is done by paramiko, but you
+will need to provide private keys and check that the content of a public
+key matches what you expected to see.)</i> As a server, you are
+responsible for deciding which users, passwords, and keys to allow, and
+what kind of channels to allow.</p>
+<p>Once you have finished, either side may request flow-controlled <a
+href="paramiko.Channel-class.html" class="link"><code>Channel</code></a>s
+to the other side, which are python objects that act like sockets, but
+send and receive data over the encrypted session.</p>
+<p>Paramiko is written entirely in python (no C or platform-dependent
+code) and is released under the GNU Lesser General Public License
+(LGPL).</p>
+Website: <a
+href="http://www.lag.net/paramiko/">http://www.lag.net/paramiko/</a>
+<hr/>
+<p><b>Version:</b> 1.5.2 (rhydon)
+</p>
+
+<p><b>Author:</b> Robey Pointer
+</p>
+
+<p><b>Contact:</b> robey&#64;lag.net
+</p>
+
+<p><b>License:</b> GNU Lesser General Public License (LGPL)
+</p>
+
+
+<!-- =========== START OF SUBMODULES =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Submodules</th></tr>
+ <tr><td><ul>
+<li> <b><a href="paramiko.agent-module.html"><code>agent</code></a></b>: <i>SSH Agent interface for Unix clients.</i>
+<li> <b><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></b>: <i><a href="paramiko.DSSKey-class.html"
+class="link"><code>DSSKey</code></a></i>
+<li> <b><a href="paramiko.file-module.html"><code>file</code></a></b>: <i>BufferedFile.</i>
+<li> <b><a href="paramiko.message-module.html"><code>message</code></a></b>: <i>Implementation of an SSH2 &quot;message&quot;.</i>
+<li> <b><a href="paramiko.pkey-module.html"><code>pkey</code></a></b>: <i>Common API for all public keys.</i>
+<li> <b><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></b>: <i><a href="paramiko.RSAKey-class.html"
+class="link"><code>RSAKey</code></a></i>
+<li> <b><a href="paramiko.server-module.html"><code>server</code></a></b>: <i><a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> is an interface to override
+for server support.</i>
+<li> <b><a href="paramiko.sftp-module.html"><code>sftp</code></a></b>
+<li> <b><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></b>
+<li> <b><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></b>: <i>Client-mode SFTP support.</i>
+<li> <b><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></b>: <i><a href="paramiko.SFTPFile-class.html"
+class="link"><code>SFTPFile</code></a></i>
+<li> <b><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></b>: <i>Abstraction of an SFTP file handle (for server mode).</i>
+<li> <b><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></b>: <i>Server-mode SFTP support.</i>
+<li> <b><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></b>: <i><a href="../private/paramiko.SFTPServerInterface-class.html"
+class="link"><code>SFTPServerInterface</code></a> is an interface to
+override for SFTP server support.</i>
+<li> <b><a href="paramiko.transport-module.html"><code>transport</code></a></b>: <i><a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> handles the core SSH2
+protocol.</i>
+<li> <b><a href="paramiko.util-module.html"><code>util</code></a></b>: <i>Useful functions used by the rest of paramiko.</i>
+<li> <b><a href="../private/paramiko.auth_handler-module.html"><code>auth_handler</code></a></b>: <i><a href="../private/paramiko.AuthHandler-class.html"
+class="link"><code>AuthHandler</code></a></i>
+<li> <b><a href="../private/paramiko.ber-module.html"><code>ber</code></a></b>
+<li> <b><a href="../private/paramiko.channel-module.html"><code>channel</code></a></b>: <i>Abstraction for an SSH2 channel.</i>
+<li> <b><a href="../private/paramiko.common-module.html"><code>common</code></a></b>: <i>Common constants and global variables.</i>
+<li> <b><a href="../private/paramiko.compress-module.html"><code>compress</code></a></b>: <i>Compression implementations for a Transport.</i>
+<li> <b><a href="../private/paramiko.kex_gex-module.html"><code>kex_gex</code></a></b>: <i>Variant on <a
+href="../private/paramiko.kex_group1.KexGroup1-class.html"
+class="link"><code>KexGroup1</code></a> where the prime &quot;p&quot; and
+generator &quot;g&quot; are provided by the server.</i>
+<li> <b><a href="../private/paramiko.kex_group1-module.html"><code>kex_group1</code></a></b>: <i>Standard SSH key exchange (&quot;kex&quot; if you wanna sound
+cool).</i>
+<li> <b><a href="../private/paramiko.logging22-module.html"><code>logging22</code></a></b>: <i>Stub out logging on python &lt; 2.3.</i>
+<li> <b><a href="../private/paramiko.packet-module.html"><code>packet</code></a></b>: <i>Packetizer.</i>
+<li> <b><a href="../private/paramiko.pipe-module.html"><code>pipe</code></a></b>: <i>Abstraction of a one-way pipe where the read end can be used in
+select().</i>
+<li> <b><a href="../private/paramiko.primes-module.html"><code>primes</code></a></b>: <i>Utility functions for dealing with primes.</i>
+<li> <b><a href="../private/paramiko.ssh_exception-module.html"><code>ssh_exception</code></a></b>: <i>Exceptions defined by paramiko.</i>
+ </ul></td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.Agent-class.html"><code>Agent</code></a></b></td>
+ <td>Client interface for using private keys from an SSH agent running on
+the local machine.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a></b></td>
+ <td>Private key held in a local SSH agent.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a></b></td>
+ <td>Reusable base class to implement python-style file buffering around a
+simpler stream.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.Channel-class.html"><code>Channel</code></a></b></td>
+ <td>A secure tunnel across an SSH <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a></b></td>
+ <td>Representation of a DSS key which can be used to sign an verify SSH2
+data.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.Message-class.html"><code>Message</code></a></b></td>
+ <td>An SSH2 <i>Message</i> is a stream of bytes that encodes some
+combination of strings, integers, bools, and infinite-precision integers
+(known in python as <i>long</i>s).</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></b></td>
+ <td>Representation of an RSA key which can be used to sign and verify SSH2
+data.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a></b></td>
+ <td>Simple object containing the security preferences of an ssh
+transport.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTP-class.html"><code>SFTP</code></a></b></td>
+ <td>an alias for <a href="paramiko.SFTPClient-class.html"
+class="link"><code>SFTPClient</code></a> for backwards compatability</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a></b></td>
+ <td>Representation of the attributes of a file (or proxied file) for SFTP
+in client or server mode.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a></b></td>
+ <td>SFTP client object.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></b></td>
+ <td>Proxy object for a file on the remote server, in client mode SFTP.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a></b></td>
+ <td>Abstract object representing a handle to an open file (or folder) in
+an SFTP server implementation.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></b></td>
+ <td>Server-side SFTP subsystem support.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a></b></td>
+ <td>Handler for a subsytem in server mode.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.Transport-class.html"><code>Transport</code></a></b></td>
+ <td>An SSH Transport attaches to a stream (usually a socket), negotiates
+an encrypted session, authenticates, and then creates stream tunnels,
+called <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>s, across the session.</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.AuthHandler-class.html"><code>AuthHandler</code></a></b></td>
+ <td>Internal class to handle the mechanics of authentication.</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a></b></td>
+ <td>&nbsp;</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.ChannelFile-class.html"><code>ChannelFile</code></a></b></td>
+ <td>A file-like wrapper around <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.Packetizer-class.html"><code>Packetizer</code></a></b></td>
+ <td>Implementation of the base SSH packet protocol.</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.PKey-class.html"><code>PKey</code></a></b></td>
+ <td>Base class for public keys.</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.ServerInterface-class.html"><code>ServerInterface</code></a></b></td>
+ <td>This class defines an interface for controlling the behavior of
+paramiko in server mode.</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.SFTPServerInterface-class.html"><code>SFTPServerInterface</code></a></b></td>
+ <td>This class defines an interface for controlling the behavior of
+paramiko when using the <a href="paramiko.SFTPServer-class.html"
+class="link"><code>SFTPServer</code></a> subsystem to provide an SFTP
+server.</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.ServerInterface-class.html"><code>x</code></a></b></td>
+ <td>This class defines an interface for controlling the behavior of
+paramiko in server mode.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Exceptions</th></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a></b></td>
+ <td>Exception raised when an authentication type (like password) is used,
+but the server isn't allowing that type.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></b></td>
+ <td>Exception raised when a password is needed to unlock a private key
+file.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a></b></td>
+ <td>&nbsp;</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SSHException-class.html"><code>SSHException</code></a></b></td>
+ <td>Exception raised by failures in SSH2 protocol negotiation or logic
+errors.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="../private/paramiko-module.html#__author__"><code>__author__</code></a></b> = <span title="'Robey Pointer &lt;robey@lag.net&gt;'"><code><span class="variable-quote">'</span>Robey&nbsp;Pointer&nbsp;&lt;robey&#64;lag.net&gt;<span class="variable-quote">'</span> </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="../private/paramiko-module.html#__date__"><code>__date__</code></a></b> = <span title="'04 Dec 2005'"><code><span class="variable-quote">'</span>04&nbsp;Dec&nbsp;2005<span class="variable-quote">'</span> </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="../private/paramiko-module.html#__license__"><code>__license__</code></a></b> = <span title="'GNU Lesser General Public License (LGPL)'"><code><span class="variable-quote">'</span>GNU&nbsp;Lesser&nbsp;General&nbsp;Public&nbsp;License&nbsp;(LGPL)<span class="variable-quote">'<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="../private/paramiko-module.html#__version__"><code>__version__</code></a></b> = <span title="'1.5.2 (rhydon)'"><code><span class="variable-quote">'</span>1.5.2&nbsp;(rhydon)<span class="variable-quote">'</span> </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="../private/paramiko-module.html#__version_info__"><code>__version_info__</code></a></b> = <span title="(1, 5, 2)"><code>(1,&nbsp;5,&nbsp;2) </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__author__"></a>
+<h3>__author__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'Robey Pointer &lt;robey@lag.net&gt;'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>Robey Pointer &lt;robey&#64;lag.net&gt;<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__date__"></a>
+<h3>__date__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'04 Dec 2005'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>04 Dec 2005<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__license__"></a>
+<h3>__license__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'GNU Lesser General Public License (LGPL)'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>GNU Lesser General Public License (LGPL)<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__version__"></a>
+<h3>__version__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'1.5.2 (rhydon)'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>1.5.2 (rhydon)<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__version_info__"></a>
+<h3>__version_info__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="(1, 5, 2)"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+(1, 5, 2) </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.Agent-class.html b/docs/private/paramiko.Agent-class.html
new file mode 100644
index 0000000..1f4e20b
--- /dev/null
+++ b/docs/private/paramiko.Agent-class.html
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Agent</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Agent
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.Agent-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.Agent-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class Agent</h2>
+
+<hr/>
+
+<p>Client interface for using private keys from an SSH agent running on
+the local machine. If an SSH agent is running, this class can be used to
+connect to it and retreive <a href="../private/paramiko.PKey-class.html"
+class="link"><code>PKey</code></a> objects which can be used when
+attempting to authenticate to remote SSH servers.</p>
+Because the SSH agent protocol uses environment variables and
+unix-domain sockets, this probably doesn't work on Windows. It does work
+on most posix platforms though (Linux and MacOS X, for example).
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Open a session with the local machine's SSH agent, if one is
+running.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the SSH agent connection.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> tuple of <a href="paramiko.AgentKey-class.html"
+ class="link"><code>AgentKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#get_keys" class="summary-sig-name"><code>get_keys</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the list of keys available through the SSH agent, if any.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_read_all"></a><span class="summary-sig"><span class="summary-sig-name">_read_all</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>wanted</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_message"></a><span class="summary-sig"><span class="summary-sig-name">_send_message</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Open a session with the local machine's SSH agent, if one is
+ running. If no agent is running, initialization will succeed, but <a
+ href="paramiko.Agent-class.html#get_keys"
+ class="link"><code>get_keys</code></a> will return an empty tuple.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if an SSH agent is found, but speaks an incompatible
+ protocol
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close the SSH agent connection.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_keys"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_keys</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the list of keys available through the SSH agent, if any. If
+ no SSH agent was running (or it couldn't be contacted), an empty list
+ will be returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a list of keys available on the SSH agent
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=tuple of <a href="paramiko.AgentKey-class.html"
+ class="link"><code>AgentKey</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.AgentKey-class.html b/docs/private/paramiko.AgentKey-class.html
new file mode 100644
index 0000000..28b1659
--- /dev/null
+++ b/docs/private/paramiko.AgentKey-class.html
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.AgentKey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;AgentKey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.AgentKey-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.AgentKey-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type AgentKey</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+
+ |
+ <b>AgentKey</b>
+</pre><br />
+
+<hr/>
+
+Private key held in a local SSH agent. This type of key can be used
+for authenticating to a remote server (signing). Most other key
+operations work as expected.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>agent</span>,
+ <span class=summary-sig-arg>blob</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string of an SSH <a href="paramiko.Message-class.html"
+class="link"><code>Message</code></a> made up of the public part(s) of
+this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the name of this private key implementation.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#sign_ssh_data" class="summary-sig-name"><code>sign_ssh_data</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>randpool</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Sign a blob of data with this private key, and return a <a
+href="paramiko.Message-class.html" class="link"><code>Message</code></a>
+representing an SSH signature message.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from PKey</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>other</span>)</span></code>
+<br />
+Compare this key to another.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_read_private_key_file" class="summary-sig-name"><code>_read_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>tag</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Read an SSH2-format private key file, looking for a string of the type
+<code>&quot;BEGIN xxx PRIVATE KEY&quot;</code> for some <code>xxx</code>,
+base64-decode the text we find, and return it as a string.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_write_private_key_file" class="summary-sig-name"><code>_write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>tag</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write an SSH2-format private key file in a form that can be read by
+paramiko or openssh.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return <code>True</code> if this key has the private part necessary
+for signing data.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#from_private_key_file" class="summary-sig-name"><code>from_private_key_file</code></a>(<span class=summary-sig-arg>cl</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Create a key object by reading a private key file. <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_base64" class="summary-sig-name"><code>get_base64</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a base64 string containing the public part of this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the number of significant bits in this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_fingerprint" class="summary-sig-name"><code>get_fingerprint</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return an MD5 fingerprint of the public part of this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Given a blob of data, and an SSH message representing a signature of
+that data, verify that it was signed with this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write private key contents into a file.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from PKey</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></b> = <span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': &lt;module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'&gt;, 'keysize': 24, 'mode': 2}}"><code>{'DES-EDE3-CBC':&nbsp;{'blocksize':&nbsp;8,&nbsp;'ciphe<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return a string of an SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> made up of the public part(s) of
+ this key. This string is suitable for passing to <a
+ href="../private/paramiko.PKey-class.html#__init__"
+ class="link"><code>__init__</code></a> to re-create the key object
+ later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string representation of an SSH key message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the name of this private key implementation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ name of this private key type, in SSH terminology (for
+ example, <code>&quot;ssh-rsa&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="sign_ssh_data"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">sign_ssh_data</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>randpool</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ Sign a blob of data with this private key, and return a <a
+ href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> representing an SSH signature
+ message.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>randpool</b></code> -
+ a secure random number generator.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<code>Crypto.Util.randpool.RandomPool</code>)</i>
+ <dd><code><b>data</b></code> -
+ the data to sign.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SSH signature message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#sign_ssh_data"><code>paramiko.PKey.sign_ssh_data</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.AuthHandler-class.html b/docs/private/paramiko.AuthHandler-class.html
new file mode 100644
index 0000000..7c2b235
--- /dev/null
+++ b/docs/private/paramiko.AuthHandler-class.html
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.AuthHandler</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;AuthHandler
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.AuthHandler-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type AuthHandler</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>AuthHandler</b>
+</pre><br />
+
+<hr/>
+
+Internal class to handle the mechanics of authentication.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>transport</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_disconnect_no_more_auth"></a><span class="summary-sig"><span class="summary-sig-name">_disconnect_no_more_auth</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_disconnect_service_not_available"></a><span class="summary-sig"><span class="summary-sig-name">_disconnect_service_not_available</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_session_blob"></a><span class="summary-sig"><span class="summary-sig-name">_get_session_blob</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>key</span>,
+ <span class=summary-sig-arg>service</span>,
+ <span class=summary-sig-arg>username</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_interactive_query"></a><span class="summary-sig"><span class="summary-sig-name">_interactive_query</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>q</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_service_accept"></a><span class="summary-sig"><span class="summary-sig-name">_parse_service_accept</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_service_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_service_request</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_userauth_banner"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_banner</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_userauth_failure"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_failure</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_userauth_info_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_info_request</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_userauth_info_response"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_info_response</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_userauth_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_request</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_userauth_success"></a><span class="summary-sig"><span class="summary-sig-name">_parse_userauth_success</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_request_auth"></a><span class="summary-sig"><span class="summary-sig-name">_request_auth</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_auth_result"></a><span class="summary-sig"><span class="summary-sig-name">_send_auth_result</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>method</span>,
+ <span class=summary-sig-arg>result</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="abort"></a><span class="summary-sig"><span class="summary-sig-name">abort</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.AuthHandler-class.html#auth_interactive" class="summary-sig-name"><code>auth_interactive</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>handler</span>,
+ <span class=summary-sig-arg>event</span>,
+ <span class=summary-sig-arg>submethods</span>)</span></code>
+<br />
+response_list = handler(title, instructions, prompt_list)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="auth_none"></a><span class="summary-sig"><span class="summary-sig-name">auth_none</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>event</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="auth_password"></a><span class="summary-sig"><span class="summary-sig-name">auth_password</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>password</span>,
+ <span class=summary-sig-arg>event</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="auth_publickey"></a><span class="summary-sig"><span class="summary-sig-name">auth_publickey</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>key</span>,
+ <span class=summary-sig-arg>event</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_username"></a><span class="summary-sig"><span class="summary-sig-name">get_username</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="is_authenticated"></a><span class="summary-sig"><span class="summary-sig-name">is_authenticated</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="wait_for_response"></a><span class="summary-sig"><span class="summary-sig-name">wait_for_response</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>event</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.AuthHandler-class.html#_handler_table"><code>_handler_table</code></a></b> = <span title="{5: &lt;function _parse_service_request at 0xb7b0ae2c&gt;, 6: &lt;function _parse_service_accept at 0xb7b0ae64&gt;, 50: &lt;function _parse_userauth_request at 0xb7b0af0c&gt;, 51: &lt;function _parse_userauth_failure at 0xb7b0af7c&gt;, 52: &lt;function _parse_userauth_success at 0xb7b0af44&gt;, 53: &lt;function _parse_userauth_banner at 0xb7b0afb4&gt;, 60: &lt;function _parse_userauth_info_request at 0xb7b1302c&gt;, 61: &lt;function _parse_userauth_info_response at 0xb7b13064&gt;}"><code>{5:&nbsp;&lt;function&nbsp;_parse_service_request&nbsp;at<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="auth_interactive"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_interactive</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>handler</span>,
+ <span class=sig-arg>event</span>,
+ <span class=sig-arg>submethods</span>=<span class=sig-default>''</span>)</span>
+ </h3>
+ response_list = handler(title, instructions, prompt_list)
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_handler_table"></a>
+<h3>_handler_table</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{5: &lt;function _parse_service_request at 0xb7b0ae2c&gt;, 6: &lt;function _parse_service_accept at 0xb7b0ae64&gt;, 50: &lt;function _parse_userauth_request at 0xb7b0af0c&gt;, 51: &lt;function _parse_userauth_failure at 0xb7b0af7c&gt;, 52: &lt;function _parse_userauth_success at 0xb7b0af44&gt;, 53: &lt;function _parse_userauth_banner at 0xb7b0afb4&gt;, 60: &lt;function _parse_userauth_info_request at 0xb7b1302c&gt;, 61: &lt;function _parse_userauth_info_response at 0xb7b13064&gt;}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{5: &lt;function _parse_service_request at 0xb7b0ae2c&gt;,
+ 6: &lt;function _parse_service_accept at 0xb7b0ae64&gt;,
+ 50: &lt;function _parse_userauth_request at 0xb7b0af0c&gt;,
+ 51: &lt;function _parse_userauth_failure at 0xb7b0af7c&gt;,
+ 52: &lt;function _parse_userauth_success at 0xb7b0af44&gt;,
+ 53: &lt;function _parse_userauth_banner at 0xb7b0afb4&gt;,
+ 60: &lt;function _parse_userauth_info_request at 0xb7b1302c&gt;,
+ 61: &lt;function _parse_userauth_info_response at 0xb7b13064&gt;} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.BadAuthenticationType-class.html b/docs/private/paramiko.BadAuthenticationType-class.html
new file mode 100644
index 0000000..023879a
--- /dev/null
+++ b/docs/private/paramiko.BadAuthenticationType-class.html
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.BadAuthenticationType</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;BadAuthenticationType
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.BadAuthenticationType-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.BadAuthenticationType-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class BadAuthenticationType</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+
+ |
+ <b>BadAuthenticationType</b>
+</pre><br />
+
+<hr/>
+
+Exception raised when an authentication type (like password) is used,
+but the server isn't allowing that type. (It may only allow public-key,
+for example.)
+<hr/>
+
+<p><b>Since:</b> 1.1
+</p>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>explanation</span>,
+ <span class=summary-sig-arg>types</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Instance Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td>
+<td><b><a href="paramiko.BadAuthenticationType-class.html#allowed_types"><code>allowed_types</code></a></b>: list of allowed authentication types provided by the server (possible
+values are: <code>&quot;none&quot;</code>,
+<code>&quot;password&quot;</code>, and
+<code>&quot;publickey&quot;</code>).</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="allowed_types"></a>
+<h3>allowed_types</h3>
+list of allowed authentication types provided by the server (possible
+values are: <code>&quot;none&quot;</code>,
+<code>&quot;password&quot;</code>, and
+<code>&quot;publickey&quot;</code>).
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ list
+
+ </dd>
+<span title="[]"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+[] </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.BaseSFTP-class.html b/docs/private/paramiko.BaseSFTP-class.html
new file mode 100644
index 0000000..18917f0
--- /dev/null
+++ b/docs/private/paramiko.BaseSFTP-class.html
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.BaseSFTP</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;BaseSFTP
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.BaseSFTP-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type BaseSFTP</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>BaseSFTP</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a>,
+ <a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></dd></dl>
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_log"></a><span class="summary-sig"><span class="summary-sig-name">_log</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_read_all"></a><span class="summary-sig"><span class="summary-sig-name">_read_all</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_read_packet"></a><span class="summary-sig"><span class="summary-sig-name">_read_packet</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_packet"></a><span class="summary-sig"><span class="summary-sig-name">_send_packet</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class=summary-sig-arg>packet</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_server_version"></a><span class="summary-sig"><span class="summary-sig-name">_send_server_version</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_version"></a><span class="summary-sig"><span class="summary-sig-name">_send_version</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_write_all"></a><span class="summary-sig"><span class="summary-sig-name">_write_all</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>out</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.BufferedFile-class.html b/docs/private/paramiko.BufferedFile-class.html
new file mode 100644
index 0000000..2ab7785
--- /dev/null
+++ b/docs/private/paramiko.BufferedFile-class.html
@@ -0,0 +1,656 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.BufferedFile</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;BufferedFile
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.BufferedFile-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.BufferedFile-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type BufferedFile</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>BufferedFile</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a>,
+ <a href="../private/paramiko.ChannelFile-class.html"><code>ChannelFile</code></a></dd></dl>
+
+<hr/>
+
+Reusable base class to implement python-style file buffering around a
+simpler stream.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns an iterator that can be used to iterate over the lines in this
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Write out any data in the write buffer.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the next line from the input, or raises
+<code>StopIteration</code> when EOF is hit.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read at most <code>size</code> bytes from the file (less if we hit the
+end of the file first).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read one entire line from the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sizehint</span>)</span></code>
+<br />
+Read all remaining lines using <a
+href="paramiko.BufferedFile-class.html#readline"
+class="link"><code>readline</code></a> and return them as a list.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>whence</span>)</span></code>
+<br />
+Set the file's current position, like stdio's <code>fseek</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the file's current position.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write data to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sequence</span>)</span></code>
+<br />
+Write a sequence of strings to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Identical to <code>iter(f)</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_get_size" class="summary-sig-name"><code>_get_size</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+<i>(subclass override)</i> Return the size of the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_read" class="summary-sig-name"><code>_read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+<i>(subclass override)</i> Read data from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_record_newline"></a><span class="summary-sig"><span class="summary-sig-name">_record_newline</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>newline</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_set_mode" class="summary-sig-name"><code>_set_mode</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Subclasses call this method to initialize the BufferedFile.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_write" class="summary-sig-name"><code>_write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+<i>(subclass override)</i> Write data into the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_write_all"></a><span class="summary-sig"><span class="summary-sig-name">_write_all</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></b> = <span title="8192">8192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__iter__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__iter__</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns an iterator that can be used to iterate over the lines in
+ this file. This iterator happens to return the file itself, since a
+ file is its own iterator.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an interator.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=iterator)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>ValueError</b></code> -
+ if the file is closed.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close the file. Future read and write operations will fail.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="flush"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">flush</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Write out any data in the write buffer. This may do nothing if write
+ buffering is not turned on.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="next"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">next</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns the next line from the input, or raises
+ <code>StopIteration</code> when EOF is hit. Unlike python file objects,
+ it's okay to mix calls to <code>next</code> and <a
+ href="paramiko.BufferedFile-class.html#readline"
+ class="link"><code>readline</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a line read from the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>StopIteration</b></code> -
+ when the end of the file is reached.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">read</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Read at most <code>size</code> bytes from the file (less if we hit
+ the end of the file first). If the <code>size</code> argument is
+ negative or omitted, read all the remaining data in the file.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>size</b></code> -
+ maximum number of bytes to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data read from the file, or an empty string if EOF was
+ encountered immediately.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="readline"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">readline</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Read one entire line from the file. A trailing newline character is
+ kept in the string (but may be absent when a file ends with an
+ incomplete line). If the size argument is present and non-negative, it
+ is a maximum byte count (including the trailing newline) and an
+ incomplete line may be returned. An empty string is returned only when
+ EOF is encountered immediately.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>size</b></code> -
+ maximum length of returned string.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ next line of the file, or an empty string if the end of the
+ file has been reached.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> Unlike stdio's <code>fgets()</code>, the returned string contains null
+characters (<code>'\0'</code>) if they occurred in the input.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="readlines"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">readlines</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>sizehint</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Read all remaining lines using <a
+ href="paramiko.BufferedFile-class.html#readline"
+ class="link"><code>readline</code></a> and return them as a list. If
+ the optional <code>sizehint</code> argument is present, instead of
+ reading up to EOF, whole lines totalling approximately sizehint bytes
+ (possibly after rounding up to an internal buffer size) are read.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>sizehint</b></code> -
+ desired maximum number of bytes to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of lines read from the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="seek"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span>
+ </h3>
+ Set the file's current position, like stdio's <code>fseek</code>.
+ Not all file objects support seeking.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position to move to within the file, relative to
+ <code>whence</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>whence</b></code> -
+ type of movement: 0 = absolute; 1 = relative to the current
+ position; 2 = relative to the end of the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file doesn't support random access.
+ </dl>
+<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or
+<code>'a+'</code>), any seek operations will be undone at the next write
+(as the file position will move back to the end of the file).
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="tell"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">tell</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the file's current position. This may not be accurate or
+ useful if the underlying file doesn't support random access, or was
+ opened in append mode.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ file position (in bytes).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ Write data to the file. If write buffering is on
+ (<code>bufsize</code> was specified and non-zero), some or all of the
+ data may not actually be written yet. (Use <a
+ href="paramiko.BufferedFile-class.html#flush"
+ class="link"><code>flush</code></a> or <a
+ href="paramiko.BufferedFile-class.html#close"
+ class="link"><code>close</code></a> to force buffered data to be
+ written out.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>data</b></code> -
+ data to write.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="writelines"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">writelines</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>sequence</span>)</span>
+ </h3>
+ Write a sequence of strings to the file. The sequence can be any
+ iterable object producing strings, typically a list of strings. (The
+ name is intended to match <a
+ href="paramiko.BufferedFile-class.html#readlines"
+ class="link"><code>readlines</code></a>; <code>writelines</code> does
+ not add line separators.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>sequence</b></code> -
+ an iterable sequence of strings.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=sequence)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="xreadlines"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">xreadlines</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Identical to <code>iter(f)</code>. This is a deprecated file
+ interface that predates python iterator support.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an iterator.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=iterator)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_get_size"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_get_size</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Return the size of the file. This is
+ called from within <a
+ href="../private/paramiko.BufferedFile-class.html#_set_mode"
+ class="link"><code>_set_mode</code></a> if the file is opened in append
+ mode, so the file position can be tracked and <a
+ href="paramiko.BufferedFile-class.html#seek"
+ class="link"><code>seek</code></a> and <a
+ href="paramiko.BufferedFile-class.html#tell"
+ class="link"><code>tell</code></a> will work correctly. If the file is
+ a stream that can't be randomly accessed, you don't need to override
+ this method,
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_read</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Read data from the stream. Return
+ <code>None</code> or raise <code>EOFError</code> to indicate EOF.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_set_mode"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_set_mode</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>,
+ <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span>
+ </h3>
+ Subclasses call this method to initialize the BufferedFile.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_write</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Write data into the stream.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SEEK_CUR"></a>
+<h3>SEEK_CUR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SEEK_END"></a>
+<h3>SEEK_END</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SEEK_SET"></a>
+<h3>SEEK_SET</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="0"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_DEFAULT_BUFSIZE"></a>
+<h3>_DEFAULT_BUFSIZE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8192"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.Channel-class.html b/docs/private/paramiko.Channel-class.html
new file mode 100644
index 0000000..83ac46e
--- /dev/null
+++ b/docs/private/paramiko.Channel-class.html
@@ -0,0 +1,1329 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Channel</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Channel
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.Channel-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.Channel-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Channel</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>Channel</b>
+</pre><br />
+
+<hr/>
+
+<p>A secure tunnel across an SSH <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>. A Channel is meant to behave
+like a socket, and has an API that should be indistinguishable from the
+python socket API.</p>
+Because SSH2 has a windowing kind of flow control, if you stop reading
+data from a Channel and its buffer fills up, the server will be unable to
+send you any more data until you read some of it. (This won't affect
+other channels on the same transport -- all channels on a single
+transport are flow-controlled independently.) Similarly, if the server
+isn't reading data you send, calls to <a
+href="paramiko.Channel-class.html#send"
+class="link"><code>send</code></a> may block, unless you set a timeout.
+This is exactly like a normal network socket, so it shouldn't be too
+surprising.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>chanid</span>)</span></code>
+<br />
+Create a new channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#exec_command" class="summary-sig-name"><code>exec_command</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>command</span>)</span></code>
+<br />
+Execute a command on the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#fileno" class="summary-sig-name"><code>fileno</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns an OS-level file descriptor which can be used for polling, but
+but <i>not</i> for reading or writing).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_id" class="summary-sig-name"><code>get_id</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the ID # for this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Get the name of this channel that was previously set by <a
+href="paramiko.Channel-class.html#set_name"
+class="link"><code>set_name</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_pty" class="summary-sig-name"><code>get_pty</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>term</span>,
+ <span class=summary-sig-arg>width</span>,
+ <span class=summary-sig-arg>height</span>)</span></code>
+<br />
+Request a pseudo-terminal from the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_transport" class="summary-sig-name"><code>get_transport</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> associated with this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> float
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#gettimeout" class="summary-sig-name"><code>gettimeout</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the timeout in seconds (as a float) associated with socket
+operations, or <code>None</code> if no timeout is set.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#invoke_shell" class="summary-sig-name"><code>invoke_shell</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Request an interactive shell session on this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#invoke_subsystem" class="summary-sig-name"><code>invoke_subsystem</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>subsystem</span>)</span></code>
+<br />
+Request a subsystem on the server (for example,
+<code>sftp</code>).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ChannelFile-class.html"
+ class="link"><code>ChannelFile</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#makefile" class="summary-sig-name"><code>makefile</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class="summary-sig-vararg">*params</span>)</span></code>
+<br />
+Return a file-like object associated with this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ChannelFile-class.html"
+ class="link"><code>ChannelFile</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#makefile_stderr" class="summary-sig-name"><code>makefile_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class="summary-sig-vararg">*params</span>)</span></code>
+<br />
+Return a file-like object associated with this channel's stderr
+stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv" class="summary-sig-name"><code>recv</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>nbytes</span>)</span></code>
+<br />
+Receive data from the channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_exit_status" class="summary-sig-name"><code>recv_exit_status</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the exit status from the process on the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_ready" class="summary-sig-name"><code>recv_ready</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns true if data is buffered and ready to be read from this
+channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_stderr" class="summary-sig-name"><code>recv_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>nbytes</span>)</span></code>
+<br />
+Receive data from the channel's stderr stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_stderr_ready" class="summary-sig-name"><code>recv_stderr_ready</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns true if data is buffered and ready to be read from this
+channel's stderr stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#resize_pty" class="summary-sig-name"><code>resize_pty</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>width</span>,
+ <span class=summary-sig-arg>height</span>)</span></code>
+<br />
+Resize the pseudo-terminal.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send" class="summary-sig-name"><code>send</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Send data to the channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send_exit_status" class="summary-sig-name"><code>send_exit_status</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>status</span>)</span></code>
+<br />
+Send the exit status of an executed command to the client.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send_stderr" class="summary-sig-name"><code>send_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Send data to the channel on the &quot;stderr&quot; stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#sendall" class="summary-sig-name"><code>sendall</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Send data to the channel, without allowing partial results.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#sendall_stderr" class="summary-sig-name"><code>sendall_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Send data to the channel's &quot;stderr&quot; stream, without allowing
+partial results.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#set_combine_stderr" class="summary-sig-name"><code>set_combine_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>combine</span>)</span></code>
+<br />
+Set whether stderr should be combined into stdout on this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#set_name" class="summary-sig-name"><code>set_name</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+<br />
+Set a name for this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#setblocking" class="summary-sig-name"><code>setblocking</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>blocking</span>)</span></code>
+<br />
+Set blocking or non-blocking mode of the channel: if
+<code>blocking</code> is 0, the channel is set to non-blocking mode;
+otherwise it's set to blocking mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#settimeout" class="summary-sig-name"><code>settimeout</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+<br />
+Set a timeout on blocking read/write operations.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown" class="summary-sig-name"><code>shutdown</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>how</span>)</span></code>
+<br />
+Shut down one or both halves of the connection.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown_read" class="summary-sig-name"><code>shutdown_read</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Shutdown the receiving side of this socket, closing the stream in the
+incoming direction.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown_write" class="summary-sig-name"><code>shutdown_write</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Shutdown the sending side of this socket, closing the stream in the
+outgoing direction.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_check_add_window"></a><span class="summary-sig"><span class="summary-sig-name">_check_add_window</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_close_internal"></a><span class="summary-sig"><span class="summary-sig-name">_close_internal</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_feed"></a><span class="summary-sig"><span class="summary-sig-name">_feed</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_feed_extended"></a><span class="summary-sig"><span class="summary-sig-name">_feed_extended</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_handle_close"></a><span class="summary-sig"><span class="summary-sig-name">_handle_close</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_handle_eof"></a><span class="summary-sig"><span class="summary-sig-name">_handle_eof</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_handle_request"></a><span class="summary-sig"><span class="summary-sig-name">_handle_request</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_log"></a><span class="summary-sig"><span class="summary-sig-name">_log</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_request_failed"></a><span class="summary-sig"><span class="summary-sig-name">_request_failed</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_request_success"></a><span class="summary-sig"><span class="summary-sig-name">_request_success</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_eof"></a><span class="summary-sig"><span class="summary-sig-name">_send_eof</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_closed"></a><span class="summary-sig"><span class="summary-sig-name">_set_closed</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_remote_channel"></a><span class="summary-sig"><span class="summary-sig-name">_set_remote_channel</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>chanid</span>,
+ <span class=summary-sig-arg>window_size</span>,
+ <span class=summary-sig-arg>max_packet_size</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_transport"></a><span class="summary-sig"><span class="summary-sig-name">_set_transport</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>transport</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_window"></a><span class="summary-sig"><span class="summary-sig-name">_set_window</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>window_size</span>,
+ <span class=summary-sig-arg>max_packet_size</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_unlink"></a><span class="summary-sig"><span class="summary-sig-name">_unlink</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Channel-class.html#_wait_for_send_window" class="summary-sig-name"><code>_wait_for_send_window</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+(You are already holding the lock.) Wait for the send window to open
+up, and allocate up to <code>size</code> bytes for transmission.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_window_adjust"></a><span class="summary-sig"><span class="summary-sig-name">_window_adjust</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.Channel-class.html#MIN_PACKET_SIZE"><code>MIN_PACKET_SIZE</code></a></b> = <span title="1024">1024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>chanid</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new channel. The channel is not associated with any
+ particular session or <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> until the Transport attaches
+ it. Normally you would only call this method from the constructor of a
+ subclass of <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>chanid</b></code> -
+ the ID of this channel, as passed by an existing <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Return a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ str
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close the channel. All future read/write operations on the channel
+ will fail. The remote end will receive no more data (after queued data
+ is flushed). Channels are automatically closed when their <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> is closed or when they are
+ garbage collected.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="exec_command"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">exec_command</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>command</span>)</span>
+ </h3>
+ <p>Execute a command on the server. If the server allows it, the
+ channel will then be directly connected to the stdin, stdout, and
+ stderr of the command being executed.</p>
+ When the command finishes executing, the channel will be closed and
+ can't be reused. You must open a new channel if you wish to execute
+ another command.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>command</b></code> -
+ a shell command to execute.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="fileno"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">fileno</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ <p>Returns an OS-level file descriptor which can be used for polling,
+ but but <i>not</i> for reading or writing). This is primaily to allow
+ python's <code>select</code> module to work.</p>
+ The first time <code>fileno</code> is called on a channel, a pipe is
+ created to simulate real OS-level file descriptor (FD) behavior.
+ Because of this, two OS-level FDs are created, which will use up FDs
+ faster than normal. You won't notice this effect unless you open
+ hundreds or thousands of channels simultaneously, but it's still
+ notable.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an OS-level file descriptor
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Warning:</b> This method causes channel reads to be slightly less efficient.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_id"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_id</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the ID # for this channel. The channel ID is unique across a
+ <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> and usually a small number.
+ It's also the number passed to <a
+ href="../private/paramiko.ServerInterface-class.html#check_channel_request"
+ class="link"><code>ServerInterface.check_channel_request</code></a>
+ when determining whether to accept a channel request in server
+ mode.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the ID of this channel.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> ivysaur
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Get the name of this channel that was previously set by <a
+ href="paramiko.Channel-class.html#set_name"
+ class="link"><code>set_name</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the name of this channel.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_pty"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_pty</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>term</span>=<span class=sig-default>'vt100'</span>,
+ <span class=sig-arg>width</span>=<span class=sig-default>80</span>,
+ <span class=sig-arg>height</span>=<span class=sig-default>24</span>)</span>
+ </h3>
+ Request a pseudo-terminal from the server. This is usually used
+ right after creating a client channel, to ask the server to provide
+ some basic terminal semantics for a shell invoked with <a
+ href="paramiko.Channel-class.html#invoke_shell"
+ class="link"><code>invoke_shell</code></a>. It isn't necessary (or
+ desirable) to call this method if you're going to exectue a single
+ command with <a href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>term</b></code> -
+ the terminal type to emulate (for example,
+ <code>'vt100'</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>width</b></code> -
+ width (in characters) of the terminal screen
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>height</b></code> -
+ height (in characters) of the terminal screen
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_transport"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_transport</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> associated with this
+ channel.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> that was used to create
+ this channel.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="gettimeout"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">gettimeout</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns the timeout in seconds (as a float) associated with socket
+ operations, or <code>None</code> if no timeout is set. This reflects
+ the last call to <a href="paramiko.Channel-class.html#setblocking"
+ class="link"><code>setblocking</code></a> or <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ timeout in seconds, or <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=float)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="invoke_shell"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">invoke_shell</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ <p>Request an interactive shell session on this channel. If the server
+ allows it, the channel will then be directly connected to the stdin,
+ stdout, and stderr of the shell.</p>
+ <p>Normally you would call <a
+ href="paramiko.Channel-class.html#get_pty"
+ class="link"><code>get_pty</code></a> before this, in which case the
+ shell will operate through the pty, and the channel will be connected
+ to the stdin and stdout of the pty.</p>
+ When the shell exits, the channel will be closed and can't be
+ reused. You must open a new channel if you wish to open another
+ shell.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="invoke_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">invoke_subsystem</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>subsystem</span>)</span>
+ </h3>
+ <p>Request a subsystem on the server (for example, <code>sftp</code>).
+ If the server allows it, the channel will then be directly connected to
+ the requested subsystem.</p>
+ When the subsystem finishes, the channel will be closed and can't be
+ reused.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>subsystem</b></code> -
+ name of the subsystem being requested.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="makefile"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">makefile</span>(<span class=sig-arg>self</span>,
+ <span class="sig-vararg">*params</span>)</span>
+ </h3>
+ Return a file-like object associated with this channel. The optional
+ <code>mode</code> and <code>bufsize</code> arguments are interpreted
+ the same way as by the built-in <code>file()</code> function in
+ python.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ object which can be used for python file I/O.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ChannelFile-class.html"
+ class="link"><code>ChannelFile</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="makefile_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">makefile_stderr</span>(<span class=sig-arg>self</span>,
+ <span class="sig-vararg">*params</span>)</span>
+ </h3>
+ <p>Return a file-like object associated with this channel's stderr
+ stream. Only channels using <a
+ href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a> or <a
+ href="paramiko.Channel-class.html#invoke_shell"
+ class="link"><code>invoke_shell</code></a> without a pty will ever have
+ data on the stderr stream.</p>
+ The optional <code>mode</code> and <code>bufsize</code> arguments
+ are interpreted the same way as by the built-in <code>file()</code>
+ function in python. For a client, it only makes sense to open this file
+ for reading. For a server, it only makes sense to open this file for
+ writing.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ object which can be used for python file I/O.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ChannelFile-class.html"
+ class="link"><code>ChannelFile</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>nbytes</span>)</span>
+ </h3>
+ Receive data from the channel. The return value is a string
+ representing the data received. The maximum amount of data to be
+ received at once is specified by <code>nbytes</code>. If a string of
+ length zero is returned, the channel stream has closed.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>nbytes</b></code> -
+ maximum number of bytes to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if no data is ready before the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv_exit_status"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv_exit_status</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the exit status from the process on the server. This is
+ mostly useful for retrieving the reults of an <a
+ href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a>. If the command hasn't
+ finished yet, this method will wait until it does, or until the channel
+ is closed. If no exit status is provided by the server, -1 is
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the exit code of the process on the server.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv_ready"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv_ready</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns true if data is buffered and ready to be read from this
+ channel. A <code>False</code> result does not mean that the channel has
+ closed; it means you may need to wait before more data arrives.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if a <a
+ href="paramiko.Channel-class.html#recv"
+ class="link"><code>recv</code></a> call on this channel would
+ immediately return at least one byte; <code>False</code>
+ otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv_stderr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>nbytes</span>)</span>
+ </h3>
+ Receive data from the channel's stderr stream. Only channels using
+ <a href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a> or <a
+ href="paramiko.Channel-class.html#invoke_shell"
+ class="link"><code>invoke_shell</code></a> without a pty will ever have
+ data on the stderr stream. The return value is a string representing
+ the data received. The maximum amount of data to be received at once is
+ specified by <code>nbytes</code>. If a string of length zero is
+ returned, the channel stream has closed.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>nbytes</b></code> -
+ maximum number of bytes to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if no data is ready before the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv_stderr_ready"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv_stderr_ready</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns true if data is buffered and ready to be read from this
+ channel's stderr stream. Only channels using <a
+ href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a> or <a
+ href="paramiko.Channel-class.html#invoke_shell"
+ class="link"><code>invoke_shell</code></a> without a pty will ever have
+ data on the stderr stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if a <a
+ href="paramiko.Channel-class.html#recv_stderr"
+ class="link"><code>recv_stderr</code></a> call on this channel
+ would immediately return at least one byte; <code>False</code>
+ otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="resize_pty"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">resize_pty</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>width</span>=<span class=sig-default>80</span>,
+ <span class=sig-arg>height</span>=<span class=sig-default>24</span>)</span>
+ </h3>
+ Resize the pseudo-terminal. This can be used to change the width and
+ height of the terminal emulation created in a previous <a
+ href="paramiko.Channel-class.html#get_pty"
+ class="link"><code>get_pty</code></a> call.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>width</b></code> -
+ new width (in characters) of the terminal screen
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>height</b></code> -
+ new height (in characters) of the terminal screen
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="send"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Send data to the channel. Returns the number of bytes sent, or 0 if
+ the channel stream is closed. Applications are responsible for checking
+ that all data has been sent: if only some of the data was transmitted,
+ the application needs to attempt delivery of the remaining data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ data to send.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ number of bytes actually sent.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if no data could be sent before the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="send_exit_status"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send_exit_status</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>status</span>)</span>
+ </h3>
+ Send the exit status of an executed command to the client. (This
+ really only makes sense in server mode.) Many clients expect to get
+ some sort of status code back from an executed command after it
+ completes.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>status</b></code> -
+ the exit code of the process
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="send_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send_stderr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Send data to the channel on the &quot;stderr&quot; stream. This is
+ normally only used by servers to send output from shell commands --
+ clients won't use this. Returns the number of bytes sent, or 0 if the
+ channel stream is closed. Applications are responsible for checking
+ that all data has been sent: if only some of the data was transmitted,
+ the application needs to attempt delivery of the remaining data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ data to send.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ number of bytes actually sent.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if no data could be sent before the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="sendall"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">sendall</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Send data to the channel, without allowing partial results. Unlike
+ <a href="paramiko.Channel-class.html#send"
+ class="link"><code>send</code></a>, this method continues to send data
+ from the given string until either all data has been sent or an error
+ occurs. Nothing is returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ data to send.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if sending stalled for longer than the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ <dd><code><b>socket.error</b></code> -
+ if an error occured before the entire string was sent.
+ </dl>
+<p><b>Note:</b> If the channel is closed while only part of the data hase been sent,
+there is no way to determine how much data (if any) was sent. This is
+irritating, but identically follows python's API.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="sendall_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">sendall_stderr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Send data to the channel's &quot;stderr&quot; stream, without
+ allowing partial results. Unlike <a
+ href="paramiko.Channel-class.html#send_stderr"
+ class="link"><code>send_stderr</code></a>, this method continues to
+ send data from the given string until all data has been sent or an
+ error occurs. Nothing is returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ data to send to the client as &quot;stderr&quot; output.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if sending stalled for longer than the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ <dd><code><b>socket.error</b></code> -
+ if an error occured before the entire string was sent.
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_combine_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_combine_stderr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>combine</span>)</span>
+ </h3>
+ <p>Set whether stderr should be combined into stdout on this channel.
+ The default is <code>False</code>, but in some cases it may be
+ convenient to have both streams combined.</p>
+ <p>If this is <code>False</code>, and <a
+ href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a> is called (or
+ <code>invoke_shell</code> with no pty), output to stderr will not show
+ up through the <a href="paramiko.Channel-class.html#recv"
+ class="link"><code>recv</code></a> and <a
+ href="paramiko.Channel-class.html#recv_ready"
+ class="link"><code>recv_ready</code></a> calls. You will have to use <a
+ href="paramiko.Channel-class.html#recv_stderr"
+ class="link"><code>recv_stderr</code></a> and <a
+ href="paramiko.Channel-class.html#recv_stderr_ready"
+ class="link"><code>recv_stderr_ready</code></a> to get stderr
+ output.</p>
+ If this is <code>True</code>, data will never show up via <a
+ href="paramiko.Channel-class.html#recv_stderr"
+ class="link"><code>recv_stderr</code></a> or <a
+ href="paramiko.Channel-class.html#recv_stderr_ready"
+ class="link"><code>recv_stderr_ready</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>combine</b></code> -
+ <code>True</code> if stderr output should be combined into
+ stdout on this channel.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ previous setting.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_name</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>)</span>
+ </h3>
+ Set a name for this channel. Currently it's only used to set the
+ name of the log level used for debugging. The name can be fetched with
+ the <a href="paramiko.Channel-class.html#get_name"
+ class="link"><code>get_name</code></a> method.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ new channel name.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="setblocking"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">setblocking</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>blocking</span>)</span>
+ </h3>
+ <p>Set blocking or non-blocking mode of the channel: if
+ <code>blocking</code> is 0, the channel is set to non-blocking mode;
+ otherwise it's set to blocking mode. Initially all channels are in
+ blocking mode.</p>
+ <p>In non-blocking mode, if a <a
+ href="paramiko.Channel-class.html#recv"
+ class="link"><code>recv</code></a> call doesn't find any data, or if a
+ <a href="paramiko.Channel-class.html#send"
+ class="link"><code>send</code></a> call can't immediately dispose of
+ the data, an error exception is raised. In blocking mode, the calls
+ block until they can proceed.</p>
+ <code>chan.setblocking(0)</code> is equivalent to
+ <code>chan.settimeout(0)</code>; <code>chan.setblocking(1)</code> is
+ equivalent to <code>chan.settimeout(None)</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>blocking</b></code> -
+ 0 to set non-blocking mode; non-0 to set blocking mode.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="settimeout"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">settimeout</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>timeout</span>)</span>
+ </h3>
+ <p>Set a timeout on blocking read/write operations. The
+ <code>timeout</code> argument can be a nonnegative float expressing
+ seconds, or <code>None</code>. If a float is given, subsequent channel
+ read/write operations will raise a timeout exception if the timeout
+ period value has elapsed before the operation has completed. Setting a
+ timeout of <code>None</code> disables timeouts on socket
+ operations.</p>
+ <code>chan.settimeout(0.0)</code> is equivalent to
+ <code>chan.setblocking(0)</code>; <code>chan.settimeout(None)</code> is
+ equivalent to <code>chan.setblocking(1)</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>timeout</b></code> -
+ seconds to wait for a pending read/write operation before
+ raising <code>socket.timeout</code>, or <code>None</code> for no
+ timeout.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=float)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="shutdown"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">shutdown</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>how</span>)</span>
+ </h3>
+ Shut down one or both halves of the connection. If <code>how</code>
+ is 0, further receives are disallowed. If <code>how</code> is 1,
+ further sends are disallowed. If <code>how</code> is 2, further sends
+ and receives are disallowed. This closes the stream in one or both
+ directions.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>how</b></code> -
+ 0 (stop receiving), 1 (stop sending), or 2 (stop receiving and
+ sending).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="shutdown_read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">shutdown_read</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Shutdown the receiving side of this socket, closing the stream in
+ the incoming direction. After this call, future reads on this channel
+ will fail instantly. This is a convenience method, equivalent to
+ <code>shutdown(0)</code>, for people who don't make it a habit to
+ memorize unix constants from the 1970s.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="shutdown_write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">shutdown_write</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Shutdown the sending side of this socket, closing the stream in the
+ outgoing direction. After this call, future writes on this channel will
+ fail instantly. This is a convenience method, equivalent to
+ <code>shutdown(1)</code>, for people who don't make it a habit to
+ memorize unix constants from the 1970s.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="_wait_for_send_window"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_wait_for_send_window</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>)</span>
+ </h3>
+ (You are already holding the lock.) Wait for the send window to open
+ up, and allocate up to <code>size</code> bytes for transmission. If no
+ space opens up before the timeout, a timeout exception is raised.
+ Returns the number of bytes available to send (may be less than
+ requested).
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MIN_PACKET_SIZE"></a>
+<h3>MIN_PACKET_SIZE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1024"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.ChannelFile-class.html b/docs/private/paramiko.ChannelFile-class.html
new file mode 100644
index 0000000..c3c4fea
--- /dev/null
+++ b/docs/private/paramiko.ChannelFile-class.html
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ChannelFile</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;ChannelFile
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.ChannelFile-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type ChannelFile</h2>
+
+<pre class="base-tree">
+ <a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+<a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a> --+
+ |
+ <b>ChannelFile</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>ChannelStderrFile</code></a></dd></dl>
+
+<hr/>
+
+A file-like wrapper around <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>. A ChannelFile is created by
+calling <a href="paramiko.Channel-class.html#makefile"
+class="link"><code>Channel.makefile</code></a>.
+<hr/>
+
+<p><b>Bug:</b> To correctly emulate the file object created from a socket's
+<code>makefile</code> method, a <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a> and its <code>ChannelFile</code>
+should be able to be closed or garbage-collected independently.
+Currently, closing the <code>ChannelFile</code> does nothing but flush
+the buffer.
+</p>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#_read" class="summary-sig-name"><code>_read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+<i>(subclass override)</i> Read data from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#_write" class="summary-sig-name"><code>_write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+<i>(subclass override)</i> Write data into the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>whence</span>)</span></code>
+<br />
+Set the file's current position, like stdio's <code>fseek</code>.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BufferedFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__del__" class="summary-sig-name"><code>__del__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns an iterator that can be used to iterate over the lines in this
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Write out any data in the write buffer.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the next line from the input, or raises
+<code>StopIteration</code> when EOF is hit.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read at most <code>size</code> bytes from the file (less if we hit the
+end of the file first).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read one entire line from the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sizehint</span>)</span></code>
+<br />
+Read all remaining lines using <a
+href="paramiko.BufferedFile-class.html#readline"
+class="link"><code>readline</code></a> and return them as a list.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the file's current position.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write data to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sequence</span>)</span></code>
+<br />
+Write a sequence of strings to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Identical to <code>iter(f)</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_get_size" class="summary-sig-name"><code>_get_size</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+<i>(subclass override)</i> Return the size of the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_record_newline" class="summary-sig-name"><code>_record_newline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>newline</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_set_mode" class="summary-sig-name"><code>_set_mode</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Subclasses call this method to initialize the BufferedFile.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BufferedFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></b> = <span title="8192">8192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Returns a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ str
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_read</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Read data from the stream. Return
+ <code>None</code> or raise <code>EOFError</code> to indicate EOF.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BufferedFile-class.html#_read"><code>paramiko.BufferedFile._read</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_write</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Write data into the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BufferedFile-class.html#_write"><code>paramiko.BufferedFile._write</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="seek"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span>
+ </h3>
+ Set the file's current position, like stdio's <code>fseek</code>.
+ Not all file objects support seeking.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position to move to within the file, relative to
+ <code>whence</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>whence</b></code> -
+ type of movement: 0 = absolute; 1 = relative to the current
+ position; 2 = relative to the end of the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file doesn't support random access.
+ </dl>
+<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or
+<code>'a+'</code>), any seek operations will be undone at the next write
+(as the file position will move back to the end of the file).
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.DSSKey-class.html b/docs/private/paramiko.DSSKey-class.html
new file mode 100644
index 0000000..9d87ee1
--- /dev/null
+++ b/docs/private/paramiko.DSSKey-class.html
@@ -0,0 +1,486 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.DSSKey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;DSSKey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.DSSKey-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.DSSKey-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type DSSKey</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+
+ |
+ <b>DSSKey</b>
+</pre><br />
+
+<hr/>
+
+Representation of a DSS key which can be used to sign an verify SSH2
+data.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Create a new instance of this public key type.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__hash__"></a><span class="summary-sig"><span class="summary-sig-name">__hash__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string of an SSH <a href="paramiko.Message-class.html"
+class="link"><code>Message</code></a> made up of the public part(s) of
+this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return <code>True</code> if this key has the private part necessary
+for signing data.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.DSSKey-class.html"
+ class="link"><code>DSSKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#generate" class="summary-sig-name"><code>generate</code></a>(<span class=summary-sig-arg>bits</span>,
+ <span class=summary-sig-arg>progress_func</span>)</span></code>
+<br />
+Generate a new private DSS key. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the number of significant bits in this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the name of this private key implementation.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="sign_ssh_data"></a><span class="summary-sig"><span class="summary-sig-name">sign_ssh_data</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>rpool</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Given a blob of data, and an SSH message representing a signature of
+that data, verify that it was signed with this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write private key contents into a file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_from_private_key_file"></a><span class="summary-sig"><span class="summary-sig-name">_from_private_key_file</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from PKey</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>other</span>)</span></code>
+<br />
+Compare this key to another.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_read_private_key_file" class="summary-sig-name"><code>_read_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>tag</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Read an SSH2-format private key file, looking for a string of the type
+<code>&quot;BEGIN xxx PRIVATE KEY&quot;</code> for some <code>xxx</code>,
+base64-decode the text we find, and return it as a string.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_write_private_key_file" class="summary-sig-name"><code>_write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>tag</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write an SSH2-format private key file in a form that can be read by
+paramiko or openssh.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#from_private_key_file" class="summary-sig-name"><code>from_private_key_file</code></a>(<span class=summary-sig-arg>cl</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Create a key object by reading a private key file. <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_base64" class="summary-sig-name"><code>get_base64</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a base64 string containing the public part of this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_fingerprint" class="summary-sig-name"><code>get_fingerprint</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return an MD5 fingerprint of the public part of this key.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from PKey</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></b> = <span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': &lt;module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'&gt;, 'keysize': 24, 'mode': 2}}"><code>{'DES-EDE3-CBC':&nbsp;{'blocksize':&nbsp;8,&nbsp;'ciphe<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>msg</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>data</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>filename</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>vals</span>=<span class=sig-default>None</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new instance of this public key type. If <code>msg</code>
+ is given, the key's public part(s) will be filled in from the message.
+ If <code>data</code> is given, the key's public part(s) will be filled
+ in from the string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>msg</b></code> -
+ an optional SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> containing a public key of
+ this type.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ <dd><code><b>data</b></code> -
+ an optional string containing a public key of this type
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if a key cannot be created from the <code>data</code> or
+ <code>msg</code> given, or no key was passed in.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__init__"><code>paramiko.PKey.__init__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return a string of an SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> made up of the public part(s) of
+ this key. This string is suitable for passing to <a
+ href="../private/paramiko.PKey-class.html#__init__"
+ class="link"><code>__init__</code></a> to re-create the key object
+ later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string representation of an SSH key message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="can_sign"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return <code>True</code> if this key has the private part necessary
+ for signing data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if this is a private key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#can_sign"><code>paramiko.PKey.can_sign</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_bits"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the number of significant bits in this key. This is useful
+ for judging the relative security of a key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ bits in the key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_bits"><code>paramiko.PKey.get_bits</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the name of this private key implementation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ name of this private key type, in SSH terminology (for
+ example, <code>&quot;ssh-rsa&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="verify_ssh_sig"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>,
+ <span class=sig-arg>msg</span>)</span>
+ </h3>
+ Given a blob of data, and an SSH message representing a signature of
+ that data, verify that it was signed with this key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>data</b></code> -
+ the data that was signed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>msg</b></code> -
+ an SSH signature message
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the signature verifies correctly;
+ <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>paramiko.PKey.verify_ssh_sig</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write_private_key_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Write private key contents into a file. If the password is not
+ <code>None</code>, the key is encrypted before writing.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to write.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ an optional password to use to encrypt the key file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if there was an error writing the file.
+ <dd><code><b>SSHException</b></code> -
+ if the key is invalid.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>paramiko.PKey.write_private_key_file</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF STATIC METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Static Method Details</th></tr>
+</table>
+
+<a name="generate"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">generate</span>(<span class=sig-arg>bits</span>=<span class=sig-default>1024</span>,
+ <span class=sig-arg>progress_func</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Generate a new private DSS key. This factory function can be used to
+ generate a new host key or authentication key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>bits</b></code> -
+ number of bits the generated key should be.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>progress_func</b></code> -
+ an optional function to call at key points in key generation
+ (used by <code>pyCrypto.PublicKey</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=function)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ new private key
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.DSSKey-class.html"
+ class="link"><code>DSSKey</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.Message-class.html b/docs/private/paramiko.Message-class.html
new file mode 100644
index 0000000..d6934e3
--- /dev/null
+++ b/docs/private/paramiko.Message-class.html
@@ -0,0 +1,654 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Message</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Message
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.Message-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.Message-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Message</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>Message</b>
+</pre><br />
+
+<hr/>
+
+<p>An SSH2 <i>Message</i> is a stream of bytes that encodes some
+combination of strings, integers, bools, and infinite-precision integers
+(known in python as <i>long</i>s). This class builds or breaks down such
+a byte stream.</p>
+Normally you don't need to deal with anything this low-level, but it's
+exposed for people implementing custom extensions, or features that
+paramiko doesn't support yet.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>content</span>)</span></code>
+<br />
+Create a new SSH2 Message.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the byte stream content of this Message, as a string.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add" class="summary-sig-name"><code>add</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class="summary-sig-vararg">*seq</span>)</span></code>
+<br />
+Add a sequence of items to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_boolean" class="summary-sig-name"><code>add_boolean</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>b</span>)</span></code>
+<br />
+Add a boolean value to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_byte" class="summary-sig-name"><code>add_byte</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>b</span>)</span></code>
+<br />
+Write a single byte to the stream, without any formatting.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_bytes" class="summary-sig-name"><code>add_bytes</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>b</span>)</span></code>
+<br />
+Write bytes to the stream, without any formatting.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_int" class="summary-sig-name"><code>add_int</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+<br />
+Add an integer to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_int64" class="summary-sig-name"><code>add_int64</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+<br />
+Add a 64-bit int to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_list" class="summary-sig-name"><code>add_list</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>l</span>)</span></code>
+<br />
+Add a list of strings to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_mpint" class="summary-sig-name"><code>add_mpint</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>z</span>)</span></code>
+<br />
+Add a long int to the stream, encoded as an infinite-precision
+integer.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_string" class="summary-sig-name"><code>add_string</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Add a string to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_boolean" class="summary-sig-name"><code>get_boolean</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a boolean from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_byte" class="summary-sig-name"><code>get_byte</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the next byte of the Message, without decomposing it.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_bytes" class="summary-sig-name"><code>get_bytes</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+<br />
+Return the next <code>n</code> bytes of the Message, without
+decomposing into an int, string, etc.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_int" class="summary-sig-name"><code>get_int</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch an int from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> long
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_int64" class="summary-sig-name"><code>get_int64</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a 64-bit int from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of strings
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_list" class="summary-sig-name"><code>get_list</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a list of strings from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> long
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_mpint" class="summary-sig-name"><code>get_mpint</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a long int (mpint) from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_remainder" class="summary-sig-name"><code>get_remainder</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the bytes of this Message that haven't already been parsed and
+returned.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_so_far" class="summary-sig-name"><code>get_so_far</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the bytes of this Message that have been parsed and
+returned.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_string" class="summary-sig-name"><code>get_string</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a string from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#rewind" class="summary-sig-name"><code>rewind</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Rewind the message to the beginning as if no items had been parsed out
+of it yet.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_add"></a><span class="summary-sig"><span class="summary-sig-name">_add</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>i</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>content</span>=<span class=sig-default>None</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new SSH2 Message.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>content</b></code> -
+ the byte stream to use as the Message content (passed in only
+ when decomposing a Message).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Returns a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return the byte stream content of this Message, as a string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the contents of this Message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add</span>(<span class=sig-arg>self</span>,
+ <span class="sig-vararg">*seq</span>)</span>
+ </h3>
+ Add a sequence of items to the stream. The values are encoded based
+ on their type: str, int, bool, list, or long.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>seq</b></code> -
+ the sequence of items
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=sequence)</i>
+ </dd>
+ </dl>
+<p><b>Bug:</b> longs are encoded non-deterministically. Don't use this method.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_boolean"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_boolean</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>b</span>)</span>
+ </h3>
+ Add a boolean value to the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>b</b></code> -
+ boolean value to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_byte"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_byte</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>b</span>)</span>
+ </h3>
+ Write a single byte to the stream, without any formatting.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>b</b></code> -
+ byte to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_bytes"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_bytes</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>b</span>)</span>
+ </h3>
+ Write bytes to the stream, without any formatting.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>b</b></code> -
+ bytes to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_int"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_int</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>n</span>)</span>
+ </h3>
+ Add an integer to the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>n</b></code> -
+ integer to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_int64"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_int64</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>n</span>)</span>
+ </h3>
+ Add a 64-bit int to the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>n</b></code> -
+ long int to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=long)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_list"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_list</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>l</span>)</span>
+ </h3>
+ Add a list of strings to the stream. They are encoded identically to
+ a single string of values separated by commas. (Yes, really, that's how
+ SSH2 does it.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>l</b></code> -
+ list of strings to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list(str))</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_mpint"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_mpint</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>z</span>)</span>
+ </h3>
+ Add a long int to the stream, encoded as an infinite-precision
+ integer. This method only works on positive numbers.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>z</b></code> -
+ long int to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=long)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_string"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_string</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Add a string to the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ string to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_boolean"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_boolean</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a boolean from the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> or <code>False</code> (from the
+ Message).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_byte"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_byte</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the next byte of the Message, without decomposing it. This is
+ equivalent to <a href="paramiko.Message-class.html#get_bytes"
+ class="link"><code>get_bytes(1)</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the next byte of the Message, or <code>'
+ aren't any bytes remaining.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_bytes"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_bytes</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>n</span>)</span>
+ </h3>
+ Return the next <code>n</code> bytes of the Message, without
+ decomposing into an int, string, etc. Just the raw bytes are
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a string of the next <code>n</code> bytes of the Message, or a
+ string of <code>n</code> zero bytes, if there aren't
+ <code>n</code> bytes remaining.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_int"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_int</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch an int from the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a 32-bit unsigned integer.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_int64"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_int64</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a 64-bit int from the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a 64-bit unsigned integer.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=long)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_list"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_list</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a list of strings from the stream. These are trivially encoded
+ as comma-separated values in a string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a list of strings.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list of strings)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_mpint"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_mpint</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a long int (mpint) from the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an arbitrary-length integer.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=long)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_remainder"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_remainder</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the bytes of this Message that haven't already been parsed
+ and returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a string of the bytes not parsed yet.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_so_far"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_so_far</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns the bytes of this Message that have been parsed and
+ returned. The string passed into a Message's constructor can be
+ regenerated by concatenating <code>get_so_far</code> and <a
+ href="paramiko.Message-class.html#get_remainder"
+ class="link"><code>get_remainder</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a string of the bytes parsed so far.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_string"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_string</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a string from the stream. This could be a byte string and may
+ contain unprintable characters. (It's not unheard of for a string to
+ contain another byte-stream Message.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a string.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="rewind"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">rewind</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Rewind the message to the beginning as if no items had been parsed
+ out of it yet.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.PKey-class.html b/docs/private/paramiko.PKey-class.html
new file mode 100644
index 0000000..3ed3e5f
--- /dev/null
+++ b/docs/private/paramiko.PKey-class.html
@@ -0,0 +1,696 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.PKey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;PKey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.PKey-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type PKey</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>PKey</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a>,
+ <a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a>,
+ <a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></dd></dl>
+
+<hr/>
+
+Base class for public keys.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Create a new instance of this public key type.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>other</span>)</span></code>
+<br />
+Compare this key to another.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string of an SSH <a href="paramiko.Message-class.html"
+class="link"><code>Message</code></a> made up of the public part(s) of
+this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_read_private_key_file" class="summary-sig-name"><code>_read_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>tag</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Read an SSH2-format private key file, looking for a string of the type
+<code>&quot;BEGIN xxx PRIVATE KEY&quot;</code> for some <code>xxx</code>,
+base64-decode the text we find, and return it as a string.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_write_private_key_file" class="summary-sig-name"><code>_write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>tag</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write an SSH2-format private key file in a form that can be read by
+paramiko or openssh.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return <code>True</code> if this key has the private part necessary
+for signing data.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#from_private_key_file" class="summary-sig-name"><code>from_private_key_file</code></a>(<span class=summary-sig-arg>cl</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Create a key object by reading a private key file. <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_base64" class="summary-sig-name"><code>get_base64</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a base64 string containing the public part of this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the number of significant bits in this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_fingerprint" class="summary-sig-name"><code>get_fingerprint</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return an MD5 fingerprint of the public part of this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the name of this private key implementation.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#sign_ssh_data" class="summary-sig-name"><code>sign_ssh_data</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>randpool</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Sign a blob of data with this private key, and return a <a
+href="paramiko.Message-class.html" class="link"><code>Message</code></a>
+representing an SSH signature message.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Given a blob of data, and an SSH message representing a signature of
+that data, verify that it was signed with this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write private key contents into a file.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></b> = <span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': &lt;module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'&gt;, 'keysize': 24, 'mode': 2}}"><code>{'DES-EDE3-CBC':&nbsp;{'blocksize':&nbsp;8,&nbsp;'ciphe<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>msg</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>data</span>=<span class=sig-default>None</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new instance of this public key type. If <code>msg</code>
+ is given, the key's public part(s) will be filled in from the message.
+ If <code>data</code> is given, the key's public part(s) will be filled
+ in from the string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>msg</b></code> -
+ an optional SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> containing a public key of
+ this type.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ <dd><code><b>data</b></code> -
+ an optional string containing a public key of this type
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if a key cannot be created from the <code>data</code> or
+ <code>msg</code> given, or no key was passed in.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__cmp__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__cmp__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>other</span>)</span>
+ <br /><i>(Comparison operator)</i>
+ </h3>
+ Compare this key to another. Returns 0 if this key is equivalent to
+ the given key, or non-0 if they are different. Only the public parts of
+ the key are compared, so a public key will compare equal to its
+ corresponding private key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>other</b></code> -
+ key to compare to.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ 0 if the two keys are equivalent, non-0 otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return a string of an SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> made up of the public part(s) of
+ this key. This string is suitable for passing to <a
+ href="../private/paramiko.PKey-class.html#__init__"
+ class="link"><code>__init__</code></a> to re-create the key object
+ later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string representation of an SSH key message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_read_private_key_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_read_private_key_file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>tag</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Read an SSH2-format private key file, looking for a string of the
+ type <code>&quot;BEGIN xxx PRIVATE KEY&quot;</code> for some
+ <code>xxx</code>, base64-decode the text we find, and return it as a
+ string. If the private key is encrypted and <code>password</code> is
+ not <code>None</code>, the given password will be used to decrypt the
+ key (otherwise <a href="paramiko.PasswordRequiredException-class.html"
+ class="link"><code>PasswordRequiredException</code></a> is thrown).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>tag</b></code> -
+ <code>&quot;RSA&quot;</code> or <code>&quot;DSA&quot;</code>,
+ the tag used to mark the data block.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>filename</b></code> -
+ name of the file to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ an optional password to use to decrypt the key file, if it's
+ encrypted.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data blob that makes up the private key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if there was an error reading the file.
+ <dd><code><b>PasswordRequiredException</b></code> -
+ if the private key file is encrypted, and
+ <code>password</code> is <code>None</code>.
+ <dd><code><b>SSHException</b></code> -
+ if the key file is invalid.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_write_private_key_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_write_private_key_file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>tag</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>data</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Write an SSH2-format private key file in a form that can be read by
+ paramiko or openssh. If no password is given, the key is written in a
+ trivially-encoded format (base64) which is completely insecure. If a
+ password is given, DES-EDE3-CBC is used.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>tag</b></code> -
+ <code>&quot;RSA&quot;</code> or <code>&quot;DSA&quot;</code>,
+ the tag used to mark the data block.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>filename</b></code> -
+ name of the file to write.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>data</b></code> -
+ data blob that makes up the private key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ an optional password to use to encrypt the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if there was an error writing the file.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="can_sign"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return <code>True</code> if this key has the private part necessary
+ for signing data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if this is a private key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_base64"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_base64</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return a base64 string containing the public part of this key.
+ Nothing secret is revealed. This format is compatible with that used to
+ store public key files or recognized host keys.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a base64 string containing the public part of the key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_bits"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the number of significant bits in this key. This is useful
+ for judging the relative security of a key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ bits in the key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_fingerprint"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_fingerprint</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return an MD5 fingerprint of the public part of this key. Nothing
+ secret is revealed.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a 16-byte string (binary) of the MD5 fingerprint, in SSH
+ format.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the name of this private key implementation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ name of this private key type, in SSH terminology (for
+ example, <code>&quot;ssh-rsa&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="sign_ssh_data"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">sign_ssh_data</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>randpool</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ Sign a blob of data with this private key, and return a <a
+ href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> representing an SSH signature
+ message.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>randpool</b></code> -
+ a secure random number generator.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<code>Crypto.Util.randpool.RandomPool</code>)</i>
+ <dd><code><b>data</b></code> -
+ the data to sign.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SSH signature message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="verify_ssh_sig"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>,
+ <span class=sig-arg>msg</span>)</span>
+ </h3>
+ Given a blob of data, and an SSH message representing a signature of
+ that data, verify that it was signed with this key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>data</b></code> -
+ the data that was signed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>msg</b></code> -
+ an SSH signature message
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the signature verifies correctly;
+ <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write_private_key_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Write private key contents into a file. If the password is not
+ <code>None</code>, the key is encrypted before writing.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to write.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ an optional password to use to encrypt the key file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if there was an error writing the file.
+ <dd><code><b>SSHException</b></code> -
+ if the key is invalid.
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Method Details</th></tr>
+</table>
+
+<a name="from_private_key_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">from_private_key_file</span>(<span class=sig-arg>cl</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Create a key object by reading a private key file. If the private
+ key is encrypted and <code>password</code> is not <code>None</code>,
+ the given password will be used to decrypt the key (otherwise <a
+ href="paramiko.PasswordRequiredException-class.html"
+ class="link"><code>PasswordRequiredException</code></a> is thrown).
+ Through the magic of python, this factory method will exist in all
+ subclasses of PKey (such as <a href="paramiko.RSAKey-class.html"
+ class="link"><code>RSAKey</code></a> or <a
+ href="paramiko.DSSKey-class.html"
+ class="link"><code>DSSKey</code></a>), but is useless on the abstract
+ PKey class.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ an optional password to use to decrypt the key file, if it's
+ encrypted
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new key object based on the given private key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if there was an error reading the file.
+ <dd><code><b>PasswordRequiredException</b></code> -
+ if the private key file is encrypted, and
+ <code>password</code> is <code>None</code>.
+ <dd><code><b>SSHException</b></code> -
+ if the key file is invalid.
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_CIPHER_TABLE"></a>
+<h3>_CIPHER_TABLE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': &lt;module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'&gt;, 'keysize': 24, 'mode': 2}}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{'DES-EDE3-CBC': {'blocksize': 8,
+ 'cipher': &lt;module 'Crypto.Cipher.DES3' from '/usr/li<span class="variable-linewrap">\</span>
+b/python2.4/site-packages/Crypto/Cipher/DES3.so'&gt;,
+ 'keysize': 24,
+ 'mode': 2}} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.Packetizer-class.html b/docs/private/paramiko.Packetizer-class.html
new file mode 100644
index 0000000..f3be97b
--- /dev/null
+++ b/docs/private/paramiko.Packetizer-class.html
@@ -0,0 +1,441 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Packetizer</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Packetizer
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.Packetizer-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Packetizer</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>Packetizer</b>
+</pre><br />
+
+<hr/>
+
+Implementation of the base SSH packet protocol.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>socket</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_build_packet"></a><span class="summary-sig"><span class="summary-sig-name">_build_packet</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>payload</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_check_keepalive"></a><span class="summary-sig"><span class="summary-sig-name">_check_keepalive</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_log"></a><span class="summary-sig"><span class="summary-sig-name">_log</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_py22_read_all"></a><span class="summary-sig"><span class="summary-sig-name">_py22_read_all</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_py22_read_timeout"></a><span class="summary-sig"><span class="summary-sig-name">_py22_read_timeout</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_read_timeout"></a><span class="summary-sig"><span class="summary-sig-name">_read_timeout</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_trigger_rekey"></a><span class="summary-sig"><span class="summary-sig-name">_trigger_rekey</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="close"></a><span class="summary-sig"><span class="summary-sig-name">close</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_hexdump"></a><span class="summary-sig"><span class="summary-sig-name">get_hexdump</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_mac_size_in"></a><span class="summary-sig"><span class="summary-sig-name">get_mac_size_in</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_mac_size_out"></a><span class="summary-sig"><span class="summary-sig-name">get_mac_size_out</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#need_rekey" class="summary-sig-name"><code>need_rekey</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns <code>True</code> if a new set of keys needs to be
+negotiated.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#read_all" class="summary-sig-name"><code>read_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>,
+ <span class=summary-sig-arg>check_rekey</span>)</span></code>
+<br />
+Read as close to N bytes as possible, blocking as long as
+necessary.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#read_message" class="summary-sig-name"><code>read_message</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Only one thread should ever be in this function (no other locking is
+done).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+<br />
+Read a line from the socket.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#send_message" class="summary-sig-name"><code>send_message</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write a block of data using the current cipher, as an SSH block.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="set_hexdump"></a><span class="summary-sig"><span class="summary-sig-name">set_hexdump</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>hexdump</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#set_inbound_cipher" class="summary-sig-name"><code>set_inbound_cipher</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>block_engine</span>,
+ <span class=summary-sig-arg>block_size</span>,
+ <span class=summary-sig-arg>mac_engine</span>,
+ <span class=summary-sig-arg>mac_size</span>,
+ <span class=summary-sig-arg>mac_key</span>)</span></code>
+<br />
+Switch inbound data cipher.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="set_inbound_compressor"></a><span class="summary-sig"><span class="summary-sig-name">set_inbound_compressor</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>compressor</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#set_keepalive" class="summary-sig-name"><code>set_keepalive</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>interval</span>,
+ <span class=summary-sig-arg>callback</span>)</span></code>
+<br />
+Turn on/off the callback keepalive.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#set_log" class="summary-sig-name"><code>set_log</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>log</span>)</span></code>
+<br />
+Set the python log object to use for logging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Packetizer-class.html#set_outbound_cipher" class="summary-sig-name"><code>set_outbound_cipher</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>block_engine</span>,
+ <span class=summary-sig-arg>block_size</span>,
+ <span class=summary-sig-arg>mac_engine</span>,
+ <span class=summary-sig-arg>mac_size</span>,
+ <span class=summary-sig-arg>mac_key</span>)</span></code>
+<br />
+Switch outbound data cipher.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="set_outbound_compressor"></a><span class="summary-sig"><span class="summary-sig-name">set_outbound_compressor</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>compressor</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="write_all"></a><span class="summary-sig"><span class="summary-sig-name">write_all</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>out</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.Packetizer-class.html#REKEY_BYTES"><code>REKEY_BYTES</code></a></b> = <span title="1073741824">1073741824&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.Packetizer-class.html#REKEY_PACKETS"><code>REKEY_PACKETS</code></a></b> = <span title="1073741824">1073741824&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="need_rekey"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">need_rekey</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns <code>True</code> if a new set of keys needs to be
+ negotiated. This will be triggered during a packet read or write, so it
+ should be checked after every read or write, or at least after every
+ few.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if a new set of keys needs to be
+ negotiated
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="read_all"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">read_all</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>n</span>,
+ <span class=sig-arg>check_rekey</span>=<span class=sig-default>False</span>)</span>
+ </h3>
+ Read as close to N bytes as possible, blocking as long as
+ necessary.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>n</b></code> -
+ number of bytes to read
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the data read
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>EOFError</b></code> -
+ if the socket was closed before all the bytes could be
+ read
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="read_message"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">read_message</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Only one thread should ever be in this function (no other locking is
+ done).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if the packet is mangled
+ <dd><code><b>NeedRekeyException</b></code> -
+ if the transport should rekey
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="readline"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">readline</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>timeout</span>)</span>
+ </h3>
+ Read a line from the socket. This is done in a fairly inefficient
+ way, but is only used for initial banner negotiation so it's not worth
+ optimising.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="send_message"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send_message</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ Write a block of data using the current cipher, as an SSH block.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_inbound_cipher"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_inbound_cipher</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>block_engine</span>,
+ <span class=sig-arg>block_size</span>,
+ <span class=sig-arg>mac_engine</span>,
+ <span class=sig-arg>mac_size</span>,
+ <span class=sig-arg>mac_key</span>)</span>
+ </h3>
+ Switch inbound data cipher.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_keepalive"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_keepalive</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>interval</span>,
+ <span class=sig-arg>callback</span>)</span>
+ </h3>
+ Turn on/off the callback keepalive. If <code>interval</code> seconds
+ pass with no data read from or written to the socket, the callback will
+ be executed and the timer will be reset.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_log"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_log</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>log</span>)</span>
+ </h3>
+ Set the python log object to use for logging.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_outbound_cipher"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_outbound_cipher</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>block_engine</span>,
+ <span class=sig-arg>block_size</span>,
+ <span class=sig-arg>mac_engine</span>,
+ <span class=sig-arg>mac_size</span>,
+ <span class=sig-arg>mac_key</span>)</span>
+ </h3>
+ Switch outbound data cipher.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="REKEY_BYTES"></a>
+<h3>REKEY_BYTES</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1073741824"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1073741824&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="REKEY_PACKETS"></a>
+<h3>REKEY_PACKETS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1073741824"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1073741824&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.PasswordRequiredException-class.html b/docs/private/paramiko.PasswordRequiredException-class.html
new file mode 100644
index 0000000..2b7fb88
--- /dev/null
+++ b/docs/private/paramiko.PasswordRequiredException-class.html
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.PasswordRequiredException</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;PasswordRequiredException
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.PasswordRequiredException-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.PasswordRequiredException-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class PasswordRequiredException</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+
+ |
+ <b>PasswordRequiredException</b>
+</pre><br />
+
+<hr/>
+
+Exception raised when a password is needed to unlock a private key
+file.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.RSAKey-class.html b/docs/private/paramiko.RSAKey-class.html
new file mode 100644
index 0000000..0550d72
--- /dev/null
+++ b/docs/private/paramiko.RSAKey-class.html
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.RSAKey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;RSAKey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.RSAKey-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.RSAKey-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type RSAKey</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+
+ |
+ <b>RSAKey</b>
+</pre><br />
+
+<hr/>
+
+Representation of an RSA key which can be used to sign and verify SSH2
+data.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Create a new instance of this public key type.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__hash__"></a><span class="summary-sig"><span class="summary-sig-name">__hash__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string of an SSH <a href="paramiko.Message-class.html"
+class="link"><code>Message</code></a> made up of the public part(s) of
+this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return <code>True</code> if this key has the private part necessary
+for signing data.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.RSAKey-class.html"
+ class="link"><code>RSAKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#generate" class="summary-sig-name"><code>generate</code></a>(<span class=summary-sig-arg>bits</span>,
+ <span class=summary-sig-arg>progress_func</span>)</span></code>
+<br />
+Generate a new private RSA key. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the number of significant bits in this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the name of this private key implementation.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="sign_ssh_data"></a><span class="summary-sig"><span class="summary-sig-name">sign_ssh_data</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>rpool</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Given a blob of data, and an SSH message representing a signature of
+that data, verify that it was signed with this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write private key contents into a file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_from_private_key_file"></a><span class="summary-sig"><span class="summary-sig-name">_from_private_key_file</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.RSAKey-class.html#_pkcs1imify" class="summary-sig-name"><code>_pkcs1imify</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+turn a 20-byte SHA1 hash into a blob of data as large as the key's N,
+using PKCS1's &quot;emsa-pkcs1-v1_5&quot; encoding.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from PKey</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>other</span>)</span></code>
+<br />
+Compare this key to another.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_read_private_key_file" class="summary-sig-name"><code>_read_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>tag</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Read an SSH2-format private key file, looking for a string of the type
+<code>&quot;BEGIN xxx PRIVATE KEY&quot;</code> for some <code>xxx</code>,
+base64-decode the text we find, and return it as a string.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#_write_private_key_file" class="summary-sig-name"><code>_write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>tag</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write an SSH2-format private key file in a form that can be read by
+paramiko or openssh.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#from_private_key_file" class="summary-sig-name"><code>from_private_key_file</code></a>(<span class=summary-sig-arg>cl</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Create a key object by reading a private key file. <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_base64" class="summary-sig-name"><code>get_base64</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a base64 string containing the public part of this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.PKey-class.html#get_fingerprint" class="summary-sig-name"><code>get_fingerprint</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return an MD5 fingerprint of the public part of this key.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from PKey</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.PKey-class.html#_CIPHER_TABLE"><code>_CIPHER_TABLE</code></a></b> = <span title="{'DES-EDE3-CBC': {'blocksize': 8, 'cipher': &lt;module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'&gt;, 'keysize': 24, 'mode': 2}}"><code>{'DES-EDE3-CBC':&nbsp;{'blocksize':&nbsp;8,&nbsp;'ciphe<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>msg</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>data</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>filename</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>vals</span>=<span class=sig-default>None</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new instance of this public key type. If <code>msg</code>
+ is given, the key's public part(s) will be filled in from the message.
+ If <code>data</code> is given, the key's public part(s) will be filled
+ in from the string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>msg</b></code> -
+ an optional SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> containing a public key of
+ this type.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ <dd><code><b>data</b></code> -
+ an optional string containing a public key of this type
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if a key cannot be created from the <code>data</code> or
+ <code>msg</code> given, or no key was passed in.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__init__"><code>paramiko.PKey.__init__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return a string of an SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> made up of the public part(s) of
+ this key. This string is suitable for passing to <a
+ href="../private/paramiko.PKey-class.html#__init__"
+ class="link"><code>__init__</code></a> to re-create the key object
+ later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string representation of an SSH key message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="can_sign"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return <code>True</code> if this key has the private part necessary
+ for signing data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if this is a private key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#can_sign"><code>paramiko.PKey.can_sign</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_bits"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the number of significant bits in this key. This is useful
+ for judging the relative security of a key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ bits in the key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_bits"><code>paramiko.PKey.get_bits</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the name of this private key implementation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ name of this private key type, in SSH terminology (for
+ example, <code>&quot;ssh-rsa&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="verify_ssh_sig"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>,
+ <span class=sig-arg>msg</span>)</span>
+ </h3>
+ Given a blob of data, and an SSH message representing a signature of
+ that data, verify that it was signed with this key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>data</b></code> -
+ the data that was signed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>msg</b></code> -
+ an SSH signature message
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the signature verifies correctly;
+ <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>paramiko.PKey.verify_ssh_sig</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write_private_key_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Write private key contents into a file. If the password is not
+ <code>None</code>, the key is encrypted before writing.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to write.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ an optional password to use to encrypt the key file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if there was an error writing the file.
+ <dd><code><b>SSHException</b></code> -
+ if the key is invalid.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>paramiko.PKey.write_private_key_file</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="_pkcs1imify"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_pkcs1imify</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ turn a 20-byte SHA1 hash into a blob of data as large as the key's
+ N, using PKCS1's &quot;emsa-pkcs1-v1_5&quot; encoding. totally
+ bizarre.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF STATIC METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Static Method Details</th></tr>
+</table>
+
+<a name="generate"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">generate</span>(<span class=sig-arg>bits</span>,
+ <span class=sig-arg>progress_func</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Generate a new private RSA key. This factory function can be used to
+ generate a new host key or authentication key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>bits</b></code> -
+ number of bits the generated key should be.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>progress_func</b></code> -
+ an optional function to call at key points in key generation
+ (used by <code>pyCrypto.PublicKey</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=function)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ new private key
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.RSAKey-class.html"
+ class="link"><code>RSAKey</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SFTP-class.html b/docs/private/paramiko.SFTP-class.html
new file mode 100644
index 0000000..7ba1c7f
--- /dev/null
+++ b/docs/private/paramiko.SFTP-class.html
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTP</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTP
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SFTP-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTP-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTP</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+
+ |
+ <a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a> --+
+ |
+ <b>SFTP</b>
+</pre><br />
+
+<hr/>
+
+an alias for <a href="paramiko.SFTPClient-class.html"
+class="link"><code>SFTPClient</code></a> for backwards compatability
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from SFTPClient</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sock</span>)</span></code>
+<br />
+Create an SFTP client from an existing <a
+href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__del__" class="summary-sig-name"><code>__del__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chdir" class="summary-sig-name"><code>chdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Change the &quot;current directory&quot; of this SFTP session.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chmod" class="summary-sig-name"><code>chmod</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>mode</span>)</span></code>
+<br />
+Change the mode (permissions) of a file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chown" class="summary-sig-name"><code>chown</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>uid</span>,
+ <span class=summary-sig-arg>gid</span>)</span></code>
+<br />
+Change the owner (<code>uid</code>) and group (<code>gid</code>) of a
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the SFTP session and its underlying channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Open a file on the remote server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#from_transport" class="summary-sig-name"><code>from_transport</code></a>(<span class=summary-sig-arg>selfclass</span>,
+ <span class=summary-sig-arg>t</span>)</span></code>
+<br />
+Create an SFTP client channel from an open <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>. <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#get" class="summary-sig-name"><code>get</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>remotepath</span>,
+ <span class=summary-sig-arg>localpath</span>)</span></code>
+<br />
+Copy a remote file (<code>remotepath</code>) from the SFTP server to
+the local host as <code>localpath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#getcwd" class="summary-sig-name"><code>getcwd</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the &quot;current working directory&quot; for this SFTP
+session, as emulated by paramiko.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir" class="summary-sig-name"><code>listdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list containing the names of the entries in the given
+<code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir_attr" class="summary-sig-name"><code>listdir_attr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list containing <a href="paramiko.SFTPAttributes-class.html"
+class="link"><code>SFTPAttributes</code></a> objects corresponding to
+files in the given <code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Retrieve information about a file on the remote system, without
+following symbolic links (shortcuts).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>mode</span>)</span></code>
+<br />
+Create a folder (directory) named <code>path</code> with numeric mode
+<code>mode</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#normalize" class="summary-sig-name"><code>normalize</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the normalized path (on the server) of a given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Open a file on the remote server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#put" class="summary-sig-name"><code>put</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>localpath</span>,
+ <span class=summary-sig-arg>remotepath</span>)</span></code>
+<br />
+Copy a local file (<code>localpath</code>) to the SFTP server as
+<code>remotepath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the target of a symbolic link (shortcut).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the file at the given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>oldpath</span>,
+ <span class=summary-sig-arg>newpath</span>)</span></code>
+<br />
+Rename a file or folder from <code>oldpath</code> to
+<code>newpath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the folder named <code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Retrieve information about a file on the remote system.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>source</span>,
+ <span class=summary-sig-arg>dest</span>)</span></code>
+<br />
+Create a symbolic link (shortcut) of the <code>source</code> path at
+<code>destination</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>unlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the file at the given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#utime" class="summary-sig-name"><code>utime</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>times</span>)</span></code>
+<br />
+Set the access and modified times of the file specified by
+<code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_adjust_cwd" class="summary-sig-name"><code>_adjust_cwd</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return an adjusted path if we're emulating a &quot;current working
+directory&quot; for the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_async_request" class="summary-sig-name"><code>_async_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>fileobj</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class="summary-sig-vararg">*arg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_convert_status" class="summary-sig-name"><code>_convert_status</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Raises EOFError or IOError on error status; otherwise does
+nothing.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_finish_responses" class="summary-sig-name"><code>_finish_responses</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>fileobj</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_read_response" class="summary-sig-name"><code>_read_response</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>waitfor</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_request" class="summary-sig-name"><code>_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class="summary-sig-vararg">*arg</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BaseSFTP</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_log" class="summary-sig-name"><code>_log</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_all" class="summary-sig-name"><code>_read_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_packet" class="summary-sig-name"><code>_read_packet</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_packet" class="summary-sig-name"><code>_send_packet</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class=summary-sig-arg>packet</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_server_version" class="summary-sig-name"><code>_send_server_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_version" class="summary-sig-name"><code>_send_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>out</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SFTPAttributes-class.html b/docs/private/paramiko.SFTPAttributes-class.html
new file mode 100644
index 0000000..a98d008
--- /dev/null
+++ b/docs/private/paramiko.SFTPAttributes-class.html
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPAttributes</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPAttributes
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SFTPAttributes-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPAttributes-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPAttributes</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>SFTPAttributes</b>
+</pre><br />
+
+<hr/>
+
+Representation of the attributes of a file (or proxied file) for SFTP
+in client or server mode. It attemps to mirror the object returned by
+<code>os.stat</code> as closely as possible, so it may have the following
+fields, with the same meanings as those returned by an
+<code>os.stat</code> object:
+<ul>
+ <li>
+ st_size
+ </li>
+ <li>
+ st_uid
+ </li>
+ <li>
+ st_gid
+ </li>
+ <li>
+ st_mode
+ </li>
+ <li>
+ st_atime
+ </li>
+ <li>
+ st_mtime
+ </li>
+</ul>
+Because SFTP allows flags to have other arbitrary named attributes,
+these are stored in a dict named <code>attr</code>. Occasionally, the
+filename is also stored, in <code>filename</code>.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Create a new (empty) SFTPAttributes object.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+create a unix-style long description of the file (like ls -l)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#from_stat" class="summary-sig-name"><code>from_stat</code></a>(<span class=summary-sig-arg>cls</span>,
+ <span class=summary-sig-arg>obj</span>,
+ <span class=summary-sig-arg>filename</span>)</span></code>
+<br />
+Create an SFTPAttributes object from an existing <code>stat</code>
+object (an object returned by <code>os.stat</code>). <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_debug_str"></a><span class="summary-sig"><span class="summary-sig-name">_debug_str</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_from_msg"></a><span class="summary-sig"><span class="summary-sig-name">_from_msg</span>(<span class=summary-sig-arg>cls</span>,
+ <span class=summary-sig-arg>msg</span>,
+ <span class=summary-sig-arg>filename</span>)</span></code>
+<br />
+ <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_pack"></a><span class="summary-sig"><span class="summary-sig-name">_pack</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_rwx"></a><span class="summary-sig"><span class="summary-sig-name">_rwx</span>(<span class=summary-sig-arg>n</span>,
+ <span class=summary-sig-arg>suid</span>,
+ <span class=summary-sig-arg>sticky</span>)</span></code>
+<br />
+ <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_unpack"></a><span class="summary-sig"><span class="summary-sig-name">_unpack</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_AMTIME"><code>FLAG_AMTIME</code></a></b> = <span title="8">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>long</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_EXTENDED"><code>FLAG_EXTENDED</code></a></b> = <span title="2147483648L"><code>2147483648L </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><code>FLAG_PERMISSIONS</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_SIZE"><code>FLAG_SIZE</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><code>FLAG_UIDGID</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new (empty) SFTPAttributes object. All fields will be
+ empty.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ create a unix-style long description of the file (like ls -l)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Method Details</th></tr>
+</table>
+
+<a name="from_stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">from_stat</span>(<span class=sig-arg>cls</span>,
+ <span class=sig-arg>obj</span>,
+ <span class=sig-arg>filename</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Create an SFTPAttributes object from an existing <code>stat</code>
+ object (an object returned by <code>os.stat</code>).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>obj</b></code> -
+ an object returned by <code>os.stat</code> (or
+ equivalent).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=object)</i>
+ <dd><code><b>filename</b></code> -
+ the filename associated with this file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ new <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> object with the same
+ attribute fields.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_AMTIME"></a>
+<h3>FLAG_AMTIME</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_EXTENDED"></a>
+<h3>FLAG_EXTENDED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>long</code>
+
+ </dd>
+<span title="2147483648L"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2147483648L </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_PERMISSIONS"></a>
+<h3>FLAG_PERMISSIONS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_SIZE"></a>
+<h3>FLAG_SIZE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_UIDGID"></a>
+<h3>FLAG_UIDGID</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SFTPClient-class.html b/docs/private/paramiko.SFTPClient-class.html
new file mode 100644
index 0000000..a6ed5c0
--- /dev/null
+++ b/docs/private/paramiko.SFTPClient-class.html
@@ -0,0 +1,1091 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPClient</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPClient
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SFTPClient-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPClient-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPClient</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+
+ |
+ <b>SFTPClient</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTP-class.html"><code>SFTP</code></a></dd></dl>
+
+<hr/>
+
+SFTP client object. <code>SFTPClient</code> is used to open an sftp
+session across an open ssh <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> and do remote file
+operations.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sock</span>)</span></code>
+<br />
+Create an SFTP client from an existing <a
+href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chdir" class="summary-sig-name"><code>chdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Change the &quot;current directory&quot; of this SFTP session.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chmod" class="summary-sig-name"><code>chmod</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>mode</span>)</span></code>
+<br />
+Change the mode (permissions) of a file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chown" class="summary-sig-name"><code>chown</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>uid</span>,
+ <span class=summary-sig-arg>gid</span>)</span></code>
+<br />
+Change the owner (<code>uid</code>) and group (<code>gid</code>) of a
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the SFTP session and its underlying channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Open a file on the remote server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#from_transport" class="summary-sig-name"><code>from_transport</code></a>(<span class=summary-sig-arg>selfclass</span>,
+ <span class=summary-sig-arg>t</span>)</span></code>
+<br />
+Create an SFTP client channel from an open <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>. <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#get" class="summary-sig-name"><code>get</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>remotepath</span>,
+ <span class=summary-sig-arg>localpath</span>)</span></code>
+<br />
+Copy a remote file (<code>remotepath</code>) from the SFTP server to
+the local host as <code>localpath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#getcwd" class="summary-sig-name"><code>getcwd</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the &quot;current working directory&quot; for this SFTP
+session, as emulated by paramiko.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir" class="summary-sig-name"><code>listdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list containing the names of the entries in the given
+<code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir_attr" class="summary-sig-name"><code>listdir_attr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list containing <a href="paramiko.SFTPAttributes-class.html"
+class="link"><code>SFTPAttributes</code></a> objects corresponding to
+files in the given <code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Retrieve information about a file on the remote system, without
+following symbolic links (shortcuts).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>mode</span>)</span></code>
+<br />
+Create a folder (directory) named <code>path</code> with numeric mode
+<code>mode</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#normalize" class="summary-sig-name"><code>normalize</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the normalized path (on the server) of a given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Open a file on the remote server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#put" class="summary-sig-name"><code>put</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>localpath</span>,
+ <span class=summary-sig-arg>remotepath</span>)</span></code>
+<br />
+Copy a local file (<code>localpath</code>) to the SFTP server as
+<code>remotepath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the target of a symbolic link (shortcut).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the file at the given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>oldpath</span>,
+ <span class=summary-sig-arg>newpath</span>)</span></code>
+<br />
+Rename a file or folder from <code>oldpath</code> to
+<code>newpath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the folder named <code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Retrieve information about a file on the remote system.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>source</span>,
+ <span class=summary-sig-arg>dest</span>)</span></code>
+<br />
+Create a symbolic link (shortcut) of the <code>source</code> path at
+<code>destination</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>unlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the file at the given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#utime" class="summary-sig-name"><code>utime</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>times</span>)</span></code>
+<br />
+Set the access and modified times of the file specified by
+<code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_adjust_cwd" class="summary-sig-name"><code>_adjust_cwd</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return an adjusted path if we're emulating a &quot;current working
+directory&quot; for the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_async_request"></a><span class="summary-sig"><span class="summary-sig-name">_async_request</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>fileobj</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class="summary-sig-vararg">*arg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPClient-class.html#_convert_status" class="summary-sig-name"><code>_convert_status</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Raises EOFError or IOError on error status; otherwise does
+nothing.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_finish_responses"></a><span class="summary-sig"><span class="summary-sig-name">_finish_responses</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>fileobj</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_read_response"></a><span class="summary-sig"><span class="summary-sig-name">_read_response</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>waitfor</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_request"></a><span class="summary-sig"><span class="summary-sig-name">_request</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class="summary-sig-vararg">*arg</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BaseSFTP</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_log" class="summary-sig-name"><code>_log</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_all" class="summary-sig-name"><code>_read_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_packet" class="summary-sig-name"><code>_read_packet</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_packet" class="summary-sig-name"><code>_send_packet</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class=summary-sig-arg>packet</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_server_version" class="summary-sig-name"><code>_send_server_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_version" class="summary-sig-name"><code>_send_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>out</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>sock</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ <p>Create an SFTP client from an existing <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>. The channel should already have
+ requested the <code>&quot;sftp&quot;</code> subsystem.</p>
+ An alternate way to create an SFTP client context is by using <a
+ href="paramiko.SFTPClient-class.html#from_transport"
+ class="link"><code>from_transport</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>sock</b></code> -
+ an open <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> using the
+ <code>&quot;sftp&quot;</code> subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>paramiko.BaseSFTP.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="chdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Change the &quot;current directory&quot; of this SFTP session. Since
+ SFTP doesn't really have the concept of a current working directory,
+ this is emulated by paramiko. Once you use this method to set a working
+ directory, all operations on this SFTPClient object will be relative to
+ that path.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ new current working directory
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the requested path doesn't exist on the server
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="chmod"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chmod</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>mode</span>)</span>
+ </h3>
+ Change the mode (permissions) of a file. The permissions are
+ unix-style and identical to those used by python's
+ <code>os.chmod</code> function.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path of the file to change the permissions of.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>mode</b></code> -
+ new permissions.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="chown"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chown</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>uid</span>,
+ <span class=sig-arg>gid</span>)</span>
+ </h3>
+ Change the owner (<code>uid</code>) and group (<code>gid</code>) of
+ a file. As with python's <code>os.chown</code> function, you must pass
+ both arguments, so if you only want to change one, use <a
+ href="paramiko.SFTPClient-class.html#stat"
+ class="link"><code>stat</code></a> first to retrieve the current owner
+ and group.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path of the file to change the owner and group of.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>uid</b></code> -
+ new owner's uid
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>gid</b></code> -
+ new group id
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close the SFTP session and its underlying channel.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>,
+ <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span>
+ </h3>
+ <p>Open a file on the remote server. The arguments are the same as for
+ python's built-in <code>file</code> (aka <code>open</code>). A
+ file-like object is returned, which closely mimics the behavior of a
+ normal python file object.</p>
+ <p>The mode indicates how the file is to be opened: <code>'r'</code>
+ for reading, <code>'w'</code> for writing (truncating an existing
+ file), <code>'a'</code> for appending, <code>'r+'</code> for
+ reading/writing, <code>'w+'</code> for reading/writing (truncating an
+ existing file), <code>'a+'</code> for reading/appending. The python
+ <code>'b'</code> flag is ignored, since SSH treats all files as binary.
+ The <code>'U'</code> flag is supported in a compatible way.</p>
+ <p>Since 1.5.2, an <code>'x'</code> flag indicates that the operation
+ should only succeed if the file was created and did not previously
+ exist. This has no direct mapping to python's file flags, but is
+ commonly known as the <code>O_EXCL</code> flag in posix.</p>
+ The file will be buffered in standard python style by default, but
+ can be altered with the <code>bufsize</code> parameter. <code>0</code>
+ turns off buffering, <code>1</code> uses line buffering, and any number
+ greater than 1 (<code>&gt;1</code>) uses that specific buffer size.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to open.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>mode</b></code> -
+ mode (python-style) to open in.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>bufsize</b></code> -
+ desired buffering (-1 = default buffer size)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a file object representing the open file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPFile)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file could not be opened.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>remotepath</span>,
+ <span class=sig-arg>localpath</span>)</span>
+ </h3>
+ Copy a remote file (<code>remotepath</code>) from the SFTP server to
+ the local host as <code>localpath</code>. Any exception raised by
+ operations will be passed through. This method is primarily provided as
+ a convenience.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>remotepath</b></code> -
+ the remote file to copy
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>localpath</b></code> -
+ the destination path on the local host
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="getcwd"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">getcwd</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the &quot;current working directory&quot; for this SFTP
+ session, as emulated by paramiko. If no directory has been set with <a
+ href="paramiko.SFTPClient-class.html#chdir"
+ class="link"><code>chdir</code></a>, this method will return
+ <code>None</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the current working directory on the server, or
+ <code>None</code>
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="listdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">listdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>=<span class=sig-default>'.'</span>)</span>
+ </h3>
+ Return a list containing the names of the entries in the given
+ <code>path</code>. The list is in arbitrary order. It does not include
+ the special entries <code>'.'</code> and <code>'..'</code> even if they
+ are present in the folder. This method is meant to mirror
+ <code>os.listdir</code> as closely as possible. For a list of full <a
+ href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> objects, see <a
+ href="paramiko.SFTPClient-class.html#listdir_attr"
+ class="link"><code>listdir_attr</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path to list (defaults to <code>'.'</code>)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of filenames
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list of str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="listdir_attr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">listdir_attr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>=<span class=sig-default>'.'</span>)</span>
+ </h3>
+ Return a list containing <a
+ href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> objects corresponding to
+ files in the given <code>path</code>. The list is in arbitrary order.
+ It does not include the special entries <code>'.'</code> and
+ <code>'..'</code> even if they are present in the folder.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path to list (defaults to <code>'.'</code>)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of attributes
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list of <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="lstat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">lstat</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Retrieve information about a file on the remote system, without
+ following symbolic links (shortcuts). This otherwise behaves exactly
+ the same as <a href="paramiko.SFTPClient-class.html#stat"
+ class="link"><code>stat</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the filename to stat.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an object containing attributes about the given file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPAttributes)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="mkdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">mkdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>mode</span>=<span class=sig-default>511</span>)</span>
+ </h3>
+ Create a folder (directory) named <code>path</code> with numeric
+ mode <code>mode</code>. The default mode is 0777 (octal). On some
+ systems, mode is ignored. Where it is used, the current umask value is
+ first masked out.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ name of the folder to create.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>mode</b></code> -
+ permissions (posix-style) for the newly-created folder.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="normalize"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">normalize</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Return the normalized path (on the server) of a given path. This can
+ be used to quickly resolve symbolic links or determine what the server
+ is considering to be the &quot;current folder&quot; (by passing
+ <code>'.'</code> as <code>path</code>).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path to be normalized.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ normalized form of the given path.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the path can't be resolved on the server
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>,
+ <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span>
+ </h3>
+ <p>Open a file on the remote server. The arguments are the same as for
+ python's built-in <code>file</code> (aka <code>open</code>). A
+ file-like object is returned, which closely mimics the behavior of a
+ normal python file object.</p>
+ <p>The mode indicates how the file is to be opened: <code>'r'</code>
+ for reading, <code>'w'</code> for writing (truncating an existing
+ file), <code>'a'</code> for appending, <code>'r+'</code> for
+ reading/writing, <code>'w+'</code> for reading/writing (truncating an
+ existing file), <code>'a+'</code> for reading/appending. The python
+ <code>'b'</code> flag is ignored, since SSH treats all files as binary.
+ The <code>'U'</code> flag is supported in a compatible way.</p>
+ <p>Since 1.5.2, an <code>'x'</code> flag indicates that the operation
+ should only succeed if the file was created and did not previously
+ exist. This has no direct mapping to python's file flags, but is
+ commonly known as the <code>O_EXCL</code> flag in posix.</p>
+ The file will be buffered in standard python style by default, but
+ can be altered with the <code>bufsize</code> parameter. <code>0</code>
+ turns off buffering, <code>1</code> uses line buffering, and any number
+ greater than 1 (<code>&gt;1</code>) uses that specific buffer size.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to open.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>mode</b></code> -
+ mode (python-style) to open in.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>bufsize</b></code> -
+ desired buffering (-1 = default buffer size)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a file object representing the open file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPFile)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file could not be opened.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="put"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">put</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>localpath</span>,
+ <span class=sig-arg>remotepath</span>)</span>
+ </h3>
+ <p>Copy a local file (<code>localpath</code>) to the SFTP server as
+ <code>remotepath</code>. Any exception raised by operations will be
+ passed through. This method is primarily provided as a convenience.</p>
+ The SFTP operations use pipelining for speed.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>localpath</b></code> -
+ the local file to copy
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>remotepath</b></code> -
+ the destination path on the SFTP server
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="readlink"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">readlink</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Return the target of a symbolic link (shortcut). You can use <a
+ href="paramiko.SFTPClient-class.html#symlink"
+ class="link"><code>symlink</code></a> to create these. The result may
+ be either an absolute or relative pathname.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path of the symbolic link file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ target path.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="remove"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">remove</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Remove the file at the given path.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path (absolute or relative) of the file to remove.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the path refers to a folder (directory). Use <a
+ href="paramiko.SFTPClient-class.html#rmdir"
+ class="link"><code>rmdir</code></a> to remove a folder.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="rename"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">rename</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>oldpath</span>,
+ <span class=sig-arg>newpath</span>)</span>
+ </h3>
+ Rename a file or folder from <code>oldpath</code> to
+ <code>newpath</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>oldpath</b></code> -
+ existing name of the file or folder.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>newpath</b></code> -
+ new name for the file or folder.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if <code>newpath</code> is a folder, or something else goes
+ wrong.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="rmdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">rmdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Remove the folder named <code>path</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ name of the folder to remove.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ <p>Retrieve information about a file on the remote system. The return
+ value is an object whose attributes correspond to the attributes of
+ python's <code>stat</code> structure as returned by
+ <code>os.stat</code>, except that it contains fewer fields. An SFTP
+ server may return as much or as little info as it wants, so the results
+ may vary from server to server.</p>
+ <p>Unlike a python <code>stat</code> object, the result may not be
+ accessed as a tuple. This is mostly due to the author's slack
+ factor.</p>
+ The fields supported are: <code>st_mode</code>,
+ <code>st_size</code>, <code>st_uid</code>, <code>st_gid</code>,
+ <code>st_atime</code>, and <code>st_mtime</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the filename to stat.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an object containing attributes about the given file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPAttributes)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="symlink"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">symlink</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>source</span>,
+ <span class=sig-arg>dest</span>)</span>
+ </h3>
+ Create a symbolic link (shortcut) of the <code>source</code> path at
+ <code>destination</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>source</b></code> -
+ path of the original file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>dest</b></code> -
+ path of the newly created symlink.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="remove"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">unlink</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Remove the file at the given path.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path (absolute or relative) of the file to remove.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the path refers to a folder (directory). Use <a
+ href="paramiko.SFTPClient-class.html#rmdir"
+ class="link"><code>rmdir</code></a> to remove a folder.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="utime"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">utime</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>times</span>)</span>
+ </h3>
+ Set the access and modified times of the file specified by
+ <code>path</code>. If <code>times</code> is <code>None</code>, then the
+ file's access and modified times are set to the current time.
+ Otherwise, <code>times</code> must be a 2-tuple of numbers, of the form
+ <code>(atime, mtime)</code>, which is used to set the access and
+ modified times, respectively. This bizarre API is mimicked from python
+ for the sake of consistency -- I apologize.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path of the file to modify.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>times</b></code> -
+ <code>None</code> or a tuple of (access time, modified time)
+ in standard internet epoch time (seconds since 01 January 1970
+ GMT).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=tuple of int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_adjust_cwd"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_adjust_cwd</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Return an adjusted path if we're emulating a &quot;current working
+ directory&quot; for the server.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_convert_status"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_convert_status</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>msg</span>)</span>
+ </h3>
+ Raises EOFError or IOError on error status; otherwise does
+ nothing.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Method Details</th></tr>
+</table>
+
+<a name="from_transport"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">from_transport</span>(<span class=sig-arg>selfclass</span>,
+ <span class=sig-arg>t</span>)</span>
+ </h3>
+ Create an SFTP client channel from an open <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>t</b></code> -
+ an open <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> which is already
+ authenticated.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a> object, referring to an
+ sftp session (channel) across the transport.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SFTPError-class.html b/docs/private/paramiko.SFTPError-class.html
new file mode 100644
index 0000000..2b7aa97
--- /dev/null
+++ b/docs/private/paramiko.SFTPError-class.html
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPError</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPError
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SFTPError-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPError-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class SFTPError</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <b>SFTPError</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SFTPFile-class.html b/docs/private/paramiko.SFTPFile-class.html
new file mode 100644
index 0000000..0c59d5f
--- /dev/null
+++ b/docs/private/paramiko.SFTPFile-class.html
@@ -0,0 +1,667 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPFile</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPFile
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SFTPFile-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPFile-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPFile</h2>
+
+<pre class="base-tree">
+ <a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+<a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a> --+
+ |
+ <b>SFTPFile</b>
+</pre><br />
+
+<hr/>
+
+Proxy object for a file on the remote server, in client mode SFTP.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sftp</span>,
+ <span class=summary-sig-arg>handle</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#check" class="summary-sig-name"><code>check</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>hash_algorithm</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>length</span>,
+ <span class=summary-sig-arg>block_size</span>)</span></code>
+<br />
+Ask the server for a hash of a section of this file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> float
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#gettimeout" class="summary-sig-name"><code>gettimeout</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the timeout in seconds (as a float) associated with the socket
+or ssh <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a> used for this file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#prefetch" class="summary-sig-name"><code>prefetch</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Pre-fetch the remaining contents of this file in anticipation of
+future <a href="paramiko.BufferedFile-class.html#read"
+class="link"><code>read</code></a> calls.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>whence</span>)</span></code>
+<br />
+Set the file's current position, like stdio's <code>fseek</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#set_pipelined" class="summary-sig-name"><code>set_pipelined</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>pipelined</span>)</span></code>
+<br />
+Turn on/off the pipelining of write operations to this file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#setblocking" class="summary-sig-name"><code>setblocking</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>blocking</span>)</span></code>
+<br />
+Set blocking or non-blocking mode on the underiying socket or ssh <a
+href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#settimeout" class="summary-sig-name"><code>settimeout</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+<br />
+Set a timeout on read/write operations on the underlying socket or ssh
+<a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Retrieve information about this file from the remote system.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_async_response"></a><span class="summary-sig"><span class="summary-sig-name">_async_response</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPFile-class.html#_check_exception" class="summary-sig-name"><code>_check_exception</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+if there's a saved exception, raise &amp; clear it</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPFile-class.html#_get_size" class="summary-sig-name"><code>_get_size</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+<i>(subclass override)</i> Return the size of the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_prefetch"></a><span class="summary-sig"><span class="summary-sig-name">_prefetch</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPFile-class.html#_read" class="summary-sig-name"><code>_read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+<i>(subclass override)</i> Read data from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_read_prefetch"></a><span class="summary-sig"><span class="summary-sig-name">_read_prefetch</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPFile-class.html#_write" class="summary-sig-name"><code>_write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+<i>(subclass override)</i> Write data into the stream.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BufferedFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns an iterator that can be used to iterate over the lines in this
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Write out any data in the write buffer.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the next line from the input, or raises
+<code>StopIteration</code> when EOF is hit.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read at most <code>size</code> bytes from the file (less if we hit the
+end of the file first).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read one entire line from the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sizehint</span>)</span></code>
+<br />
+Read all remaining lines using <a
+href="paramiko.BufferedFile-class.html#readline"
+class="link"><code>readline</code></a> and return them as a list.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the file's current position.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write data to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sequence</span>)</span></code>
+<br />
+Write a sequence of strings to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Identical to <code>iter(f)</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_record_newline" class="summary-sig-name"><code>_record_newline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>newline</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_set_mode" class="summary-sig-name"><code>_set_mode</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Subclasses call this method to initialize the BufferedFile.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><code>MAX_REQUEST_SIZE</code></a></b> = <span title="32768">32768&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BufferedFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></b> = <span title="8192">8192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="check"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>hash_algorithm</span>,
+ <span class=sig-arg>offset</span>=<span class=sig-default>0</span>,
+ <span class=sig-arg>length</span>=<span class=sig-default>0</span>,
+ <span class=sig-arg>block_size</span>=<span class=sig-default>0</span>)</span>
+ </h3>
+ <p>Ask the server for a hash of a section of this file. This can be
+ used to verify a successful upload or download, or for various
+ rsync-like operations.</p>
+ <p>The file is hashed from <code>offset</code>, for <code>length</code>
+ bytes. If <code>length</code> is 0, the remainder of the file is
+ hashed. Thus, if both <code>offset</code> and <code>length</code> are
+ zero, the entire file is hashed.</p>
+ <p>Normally, <code>block_size</code> will be 0 (the default), and this
+ method will return a byte string representing the requested hash (for
+ example, a string of length 16 for MD5, or 20 for SHA-1). If a non-zero
+ <code>block_size</code> is given, each chunk of the file (from
+ <code>offset</code> to <code>offset + length</code>) of
+ <code>block_size</code> bytes is computed as a separate hash. The hash
+ results are all concatenated and returned as a single string.</p>
+ For example, <code>check('sha1', 0, 1024, 512)</code> will return a
+ string of length 40. The first 20 bytes will be the SHA-1 of the first
+ 512 bytes of the file, and the last 20 bytes will be the SHA-1 of the
+ next 512 bytes.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hash_algorithm</b></code> -
+ the name of the hash algorithm to use (normally
+ <code>&quot;sha1&quot;</code> or
+ <code>&quot;md5&quot;</code>)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>offset</b></code> -
+ offset into the file to begin hashing (0 means to start from
+ the beginning)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or long)</i>
+ <dd><code><b>length</b></code> -
+ number of bytes to hash (0 means continue to the end of the
+ file)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or long)</i>
+ <dd><code><b>block_size</b></code> -
+ number of bytes to hash per result (must not be less than 256;
+ 0 means to compute only one hash of the entire segment)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string of bytes representing the hash of each block,
+ concatenated together
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the server doesn't support the &quot;check-file&quot;
+ extension, or possibly doesn't support the hash algorithm
+ requested
+ </dl>
+<p><b>Note:</b> Many (most?) servers don't support this extension yet.
+</p>
+
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>_async</span>=<span class=sig-default>False</span>)</span>
+ </h3>
+ Close the file. Future read and write operations will fail.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="paramiko.BufferedFile-class.html#close"><code>paramiko.BufferedFile.close</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="gettimeout"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">gettimeout</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns the timeout in seconds (as a float) associated with the
+ socket or ssh <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> used for this file.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ float
+ </dd>
+ </dl>
+<p><b>See Also:</b> <a href="paramiko.Channel-class.html#gettimeout"
+class="link"><code>Channel.gettimeout</code></a>
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="prefetch"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">prefetch</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Pre-fetch the remaining contents of this file in anticipation of
+ future <a href="paramiko.BufferedFile-class.html#read"
+ class="link"><code>read</code></a> calls. If reading the entire file,
+ pre-fetching can dramatically improve the download speed by avoiding
+ roundtrip latency. The file's contents are incrementally buffered in a
+ background thread.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.5.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="seek"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span>
+ </h3>
+ Set the file's current position, like stdio's <code>fseek</code>.
+ Not all file objects support seeking.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position to move to within the file, relative to
+ <code>whence</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>whence</b></code> -
+ type of movement: 0 = absolute; 1 = relative to the current
+ position; 2 = relative to the end of the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file doesn't support random access.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="paramiko.BufferedFile-class.html#seek"><code>paramiko.BufferedFile.seek</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or
+<code>'a+'</code>), any seek operations will be undone at the next write
+(as the file position will move back to the end of the file).
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_pipelined"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_pipelined</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>pipelined</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ <p>Turn on/off the pipelining of write operations to this file. When
+ pipelining is on, paramiko won't wait for the server response after
+ each write operation. Instead, they're collected as they come in. At
+ the first non-write operation (including <a
+ href="paramiko.SFTPFile-class.html#close"
+ class="link"><code>close</code></a>), all remaining server responses
+ are collected. This means that if there was an error with one of your
+ later writes, an exception might be thrown from within <a
+ href="paramiko.SFTPFile-class.html#close"
+ class="link"><code>close</code></a> instead of <a
+ href="paramiko.BufferedFile-class.html#write"
+ class="link"><code>write</code></a>.</p>
+ By default, files are <i>not</i> pipelined.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>pipelined</b></code> -
+ <code>True</code> if pipelining should be turned on for this
+ file; <code>False</code> otherwise
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.5
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="setblocking"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">setblocking</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>blocking</span>)</span>
+ </h3>
+ Set blocking or non-blocking mode on the underiying socket or ssh <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>blocking</b></code> -
+ 0 to set non-blocking mode; non-0 to set blocking mode.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>See Also:</b> <a href="paramiko.Channel-class.html#setblocking"
+class="link"><code>Channel.setblocking</code></a>
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="settimeout"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">settimeout</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>timeout</span>)</span>
+ </h3>
+ Set a timeout on read/write operations on the underlying socket or
+ ssh <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>timeout</b></code> -
+ seconds to wait for a pending read/write operation before
+ raising <code>socket.timeout</code>, or <code>None</code> for no
+ timeout
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=float)</i>
+ </dd>
+ </dl>
+<p><b>See Also:</b> <a href="paramiko.Channel-class.html#settimeout"
+class="link"><code>Channel.settimeout</code></a>
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Retrieve information about this file from the remote system. This is
+ exactly like <a href="paramiko.SFTP-class.html#stat"
+ class="link"><code>SFTP.stat</code></a>, except that it operates on an
+ already-open file.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an object containing attributes about this file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPAttributes)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_check_exception"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_check_exception</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ if there's a saved exception, raise &amp; clear it
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_get_size"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_get_size</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Return the size of the file. This is
+ called from within <a
+ href="../private/paramiko.BufferedFile-class.html#_set_mode"
+ class="link"><code>_set_mode</code></a> if the file is opened in append
+ mode, so the file position can be tracked and <a
+ href="paramiko.BufferedFile-class.html#seek"
+ class="link"><code>seek</code></a> and <a
+ href="paramiko.BufferedFile-class.html#tell"
+ class="link"><code>tell</code></a> will work correctly. If the file is
+ a stream that can't be randomly accessed, you don't need to override
+ this method,
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BufferedFile-class.html#_get_size"><code>paramiko.BufferedFile._get_size</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_read</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Read data from the stream. Return
+ <code>None</code> or raise <code>EOFError</code> to indicate EOF.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BufferedFile-class.html#_read"><code>paramiko.BufferedFile._read</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_write</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Write data into the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BufferedFile-class.html#_write"><code>paramiko.BufferedFile._write</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MAX_REQUEST_SIZE"></a>
+<h3>MAX_REQUEST_SIZE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="32768"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+32768&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SFTPHandle-class.html b/docs/private/paramiko.SFTPHandle-class.html
new file mode 100644
index 0000000..958dbba
--- /dev/null
+++ b/docs/private/paramiko.SFTPHandle-class.html
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPHandle</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPHandle
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SFTPHandle-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPHandle-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPHandle</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>SFTPHandle</b>
+</pre><br />
+
+<hr/>
+
+<p>Abstract object representing a handle to an open file (or folder) in
+an SFTP server implementation. Each handle has a string representation
+used by the client to refer to the underlying file.</p>
+Server implementations can (and should) subclass SFTPHandle to
+implement features of a file handle, like <a
+href="paramiko.SFTPHandle-class.html#stat"
+class="link"><code>stat</code></a> or <a
+href="paramiko.SFTPHandle-class.html#chattr"
+class="link"><code>chattr</code></a>.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#chattr" class="summary-sig-name"><code>chattr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>attr</span>)</span></code>
+<br />
+Change the attributes of this file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+When a client closes a file, this method is called on the handle.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>length</span>)</span></code>
+<br />
+Read up to <code>length</code> bytes from this file, starting at
+position <code>offset</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return an <a href="paramiko.SFTPAttributes-class.html"
+class="link"><code>SFTPAttributes</code></a> object referring to this
+open file, or an error code.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write <code>data</code> into this file at position
+<code>offset</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_name"></a><span class="summary-sig"><span class="summary-sig-name">_get_name</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPHandle-class.html#_get_next_files" class="summary-sig-name"><code>_get_next_files</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Used by the SFTP server code to retreive a cached directory
+listing.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPHandle-class.html#_set_files" class="summary-sig-name"><code>_set_files</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>files</span>)</span></code>
+<br />
+Used by the SFTP server code to cache a directory listing.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_name"></a><span class="summary-sig"><span class="summary-sig-name">_set_name</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="chattr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chattr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>attr</span>)</span>
+ </h3>
+ Change the attributes of this file. The <code>attr</code> object
+ will contain only those fields provided by the client in its request,
+ so you should check for the presence of fields before using them.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>attr</b></code> -
+ the attributes to change on this file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ <p>When a client closes a file, this method is called on the handle.
+ Normally you would use this method to close the underlying OS level
+ file object(s).</p>
+ The default implementation checks for attributes on
+ <code>self</code> named <code>readfile</code> and/or
+ <code>writefile</code>, and if either or both are present, their
+ <code>close()</code> methods are called. This means that if you are
+ using the default implementations of <a
+ href="paramiko.SFTPHandle-class.html#read"
+ class="link"><code>read</code></a> and <a
+ href="paramiko.SFTPHandle-class.html#write"
+ class="link"><code>write</code></a>, this method's default
+ implementation should be fine also.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">read</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>length</span>)</span>
+ </h3>
+ <p>Read up to <code>length</code> bytes from this file, starting at
+ position <code>offset</code>. The offset may be a python long, since
+ SFTP allows it to be 64 bits.</p>
+ <p>If the end of the file has been reached, this method may return an
+ empty string to signify EOF, or it may also return <a
+ href="../private/paramiko-module.html#SFTP_EOF"
+ class="link"><code>SFTP_EOF</code></a>.</p>
+ The default implementation checks for an attribute on
+ <code>self</code> named <code>readfile</code>, and if present, performs
+ the read operation on the python file-like object found there. (This is
+ meant as a time saver for the common case where you are wrapping a
+ python file object.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position in the file to start reading from.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or long)</i>
+ <dd><code><b>length</b></code> -
+ number of bytes to attempt to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data read from the file, or an SFTP error code.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return an <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> object referring to this
+ open file, or an error code. This is equivalent to <a
+ href="../private/paramiko.SFTPServerInterface-class.html#stat"
+ class="link"><code>SFTPServerInterface.stat</code></a>, except it's
+ called on an open file instead of a path.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an attributes object for the given file, or an SFTP error code
+ (like <a
+ href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED"
+ class="link"><code>SFTP_PERMISSION_DENIED</code></a>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ <p>Write <code>data</code> into this file at position
+ <code>offset</code>. Extending the file past its original end is
+ expected. Unlike python's normal <code>write()</code> methods, this
+ method cannot do a partial write: it must write all of
+ <code>data</code> or else return an error.</p>
+ The default implementation checks for an attribute on
+ <code>self</code> named <code>writefile</code>, and if present,
+ performs the write operation on the python file-like object found
+ there. The attribute is named differently from <code>readfile</code> to
+ make it easy to implement read-only (or write-only) files, but if both
+ attributes are present, they should refer to the same file.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position in the file to start reading from.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or long)</i>
+ <dd><code><b>data</b></code> -
+ data to write into the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SFTP error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_get_next_files"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_get_next_files</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Used by the SFTP server code to retreive a cached directory
+ listing.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_set_files"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_set_files</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>files</span>)</span>
+ </h3>
+ Used by the SFTP server code to cache a directory listing. (In the
+ SFTP protocol, listing a directory is a multi-stage process requiring a
+ temporary handle.)
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SFTPServer-class.html b/docs/private/paramiko.SFTPServer-class.html
new file mode 100644
index 0000000..07a16b0
--- /dev/null
+++ b/docs/private/paramiko.SFTPServer-class.html
@@ -0,0 +1,511 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPServer</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPServer
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SFTPServer-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPServer-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPServer</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+
+ |
+ <a href="threading.Thread-class.html"><code>Thread</code></a> --+
+ |
+ <a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a> --+
+ |
+ <a href="__builtin__.object-class.html"><code>object</code></a> --+ |
+ | |
+ <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+
+ |
+ <b>SFTPServer</b>
+</pre><br />
+
+<hr/>
+
+Server-side SFTP subsystem support. Since this is a <a
+href="paramiko.SubsystemHandler-class.html"
+class="link"><code>SubsystemHandler</code></a>, it can be (and is meant
+to be) set as the handler for <code>&quot;sftp&quot;</code> requests. Use
+<a href="paramiko.Transport-class.html#set_subsystem_handler"
+class="link"><code>Transport.set_subsystem_handler</code></a> to activate
+this class.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>server</span>,
+ <span class=summary-sig-arg>sftp_si</span>,
+ <span class="summary-sig-vararg">*largs</span>,
+ <span class="summary-sig-kwarg">**kwargs</span>)</span></code>
+<br />
+The constructor for SFTPServer is meant to be called from within the
+<a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> as a subsystem handler.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#convert_errno" class="summary-sig-name"><code>convert_errno</code></a>(<span class=summary-sig-arg>e</span>)</span></code>
+<br />
+Convert an errno value (as from an <code>OSError</code> or
+<code>IOError</code>) into a standard SFTP result code. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#finish_subsystem" class="summary-sig-name"><code>finish_subsystem</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Perform any cleanup at the end of a subsystem.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#set_file_attr" class="summary-sig-name"><code>set_file_attr</code></a>(<span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>attr</span>)</span></code>
+<br />
+Change a file's attributes on the local filesystem. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#start_subsystem" class="summary-sig-name"><code>start_subsystem</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>transport</span>,
+ <span class=summary-sig-arg>channel</span>)</span></code>
+<br />
+Process an ssh subsystem in server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_check_file"></a><span class="summary-sig"><span class="summary-sig-name">_check_file</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>request_number</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServer-class.html#_convert_pflags" class="summary-sig-name"><code>_convert_pflags</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>pflags</span>)</span></code>
+<br />
+convert SFTP-style open() flags to python's os.open() flags</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_open_folder"></a><span class="summary-sig"><span class="summary-sig-name">_open_folder</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>request_number</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_process"></a><span class="summary-sig"><span class="summary-sig-name">_process</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class=summary-sig-arg>request_number</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_read_folder"></a><span class="summary-sig"><span class="summary-sig-name">_read_folder</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>request_number</span>,
+ <span class=summary-sig-arg>folder</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_response"></a><span class="summary-sig"><span class="summary-sig-name">_response</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>request_number</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class="summary-sig-vararg">*arg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_handle_response"></a><span class="summary-sig"><span class="summary-sig-name">_send_handle_response</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>request_number</span>,
+ <span class=summary-sig-arg>handle</span>,
+ <span class=summary-sig-arg>folder</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_status"></a><span class="summary-sig"><span class="summary-sig-name">_send_status</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>request_number</span>,
+ <span class=summary-sig-arg>code</span>,
+ <span class=summary-sig-arg>desc</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BaseSFTP</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_log" class="summary-sig-name"><code>_log</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_all" class="summary-sig-name"><code>_read_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_read_packet" class="summary-sig-name"><code>_read_packet</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_packet" class="summary-sig-name"><code>_send_packet</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>t</span>,
+ <span class=summary-sig-arg>packet</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_server_version" class="summary-sig-name"><code>_send_server_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_send_version" class="summary-sig-name"><code>_send_version</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BaseSFTP-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>out</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from SubsystemHandler</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#get_server" class="summary-sig-name"><code>get_server</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the <a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> object associated with this
+channel and subsystem.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SubsystemHandler-class.html#_run" class="summary-sig-name"><code>_run</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#run" class="summary-sig-name"><code>run</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>daemonic</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/threading.Thread-class.html#_set_daemon" class="summary-sig-name"><code>_set_daemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from _Verbose</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/threading._Verbose-class.html#_note" class="summary-sig-name"><code>_note</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>format</span>,
+ <span class="summary-sig-vararg">*args</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>bool</code></font></td>
+<td><b><a href="../private/threading.Thread-class.html#__initialized"><code>_Thread__initialized</code></a></b> = <span title="False"><code>False </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>server</span>,
+ <span class=sig-arg>sftp_si</span>=<span class=sig-default>&lt;class&nbsp;'paramiko.SFTPServerInterface'&gt;</span>,
+ <span class="sig-vararg">*largs</span>,
+ <span class="sig-kwarg">**kwargs</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ The constructor for SFTPServer is meant to be called from within the
+ <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> as a subsystem handler.
+ <code>server</code> and any additional parameters or keyword parameters
+ are passed from the original call to <a
+ href="paramiko.Transport-class.html#set_subsystem_handler"
+ class="link"><code>Transport.set_subsystem_handler</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ channel passed from the <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>server</b></code> -
+ the server object associated with this channel and
+ subsystem
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>)</i>
+ <dd><code><b>sftp_si</b></code> -
+ a subclass of <a
+ href="../private/paramiko.SFTPServerInterface-class.html"
+ class="link"><code>SFTPServerInterface</code></a> to use for
+ handling individual requests.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=class)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>paramiko.BaseSFTP.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="finish_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">finish_subsystem</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Perform any cleanup at the end of a subsystem. The default
+ implementation just closes the channel.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="paramiko.SubsystemHandler-class.html#finish_subsystem"><code>paramiko.SubsystemHandler.finish_subsystem</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="start_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">start_subsystem</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>transport</span>,
+ <span class=sig-arg>channel</span>)</span>
+ </h3>
+ <p>Process an ssh subsystem in server mode. This method is called on a
+ new object (and in a new thread) for each subsystem request. It is
+ assumed that all subsystem logic will take place here, and when the
+ subsystem is finished, this method will return. After this method
+ returns, the channel is closed.</p>
+ The combination of <code>transport</code> and <code>channel</code>
+ are unique; this handler corresponds to exactly one <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> on one <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>transport</b></code> -
+ the server-mode <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>)</i>
+ <dd><code><b>channel</b></code> -
+ the channel associated with this subsystem request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="paramiko.SubsystemHandler-class.html#start_subsystem"><code>paramiko.SubsystemHandler.start_subsystem</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Note:</b> It is the responsibility of this method to exit if the underlying <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> is closed. This can be done by
+checking <a href="paramiko.Transport-class.html#is_active"
+class="link"><code>Transport.is_active</code></a> or noticing an EOF on
+the <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>. If this method loops forever
+without checking for this case, your python interpreter may refuse to
+exit because this thread will still be running.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="_convert_pflags"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_convert_pflags</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>pflags</span>)</span>
+ </h3>
+ convert SFTP-style open() flags to python's os.open() flags
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF STATIC METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Static Method Details</th></tr>
+</table>
+
+<a name="convert_errno"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">convert_errno</span>(<span class=sig-arg>e</span>)</span>
+ </h3>
+ Convert an errno value (as from an <code>OSError</code> or
+ <code>IOError</code>) into a standard SFTP result code. This is a
+ convenience function for trapping exceptions in server code and
+ returning an appropriate result.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>e</b></code> -
+ an errno code, as from <code>OSError.errno</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SFTP error code like <a
+ href="../private/paramiko-module.html#SFTP_NO_SUCH_FILE"
+ class="link"><code>SFTP_NO_SUCH_FILE</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_file_attr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_file_attr</span>(<span class=sig-arg>filename</span>,
+ <span class=sig-arg>attr</span>)</span>
+ </h3>
+ <p>Change a file's attributes on the local filesystem. The contents of
+ <code>attr</code> are used to change the permissions, owner, group
+ ownership, and/or modification &amp; access time of the file, depending
+ on which attributes are present in <code>attr</code>.</p>
+ This is meant to be a handy helper function for translating SFTP
+ file requests into local file operations.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to alter (should usually be an absolute
+ path).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>attr</b></code> -
+ attributes to change.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SFTPServerInterface-class.html b/docs/private/paramiko.SFTPServerInterface-class.html
new file mode 100644
index 0000000..a0bd429
--- /dev/null
+++ b/docs/private/paramiko.SFTPServerInterface-class.html
@@ -0,0 +1,744 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPServerInterface</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPServerInterface
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.SFTPServerInterface-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPServerInterface</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>SFTPServerInterface</b>
+</pre><br />
+
+<hr/>
+
+<p>This class defines an interface for controlling the behavior of
+paramiko when using the <a href="paramiko.SFTPServer-class.html"
+class="link"><code>SFTPServer</code></a> subsystem to provide an SFTP
+server.</p>
+Methods on this class are called from the SFTP session's thread, so
+you can block as long as necessary without affecting other sessions (even
+other SFTP sessions). However, raising an exception will usually cause
+the SFTP session to abruptly end, so you will usually want to catch
+exceptions and return an appropriate error code.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>server</span>,
+ <span class="summary-sig-vararg">*largs</span>,
+ <span class="summary-sig-kwarg">**kwargs</span>)</span></code>
+<br />
+Create a new SFTPServerInterface object.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#canonicalize" class="summary-sig-name"><code>canonicalize</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the canonical form of a path on the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#chattr" class="summary-sig-name"><code>chattr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>attr</span>)</span></code>
+<br />
+Change the attributes of a file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#list_folder" class="summary-sig-name"><code>list_folder</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list of files within a given folder.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return an <a href="paramiko.SFTPAttributes-class.html"
+class="link"><code>SFTPAttributes</code></a> object for a path on the
+server, or an error code.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>attr</span>)</span></code>
+<br />
+Create a new directory with the given attributes.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#open" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>flags</span>,
+ <span class=summary-sig-arg>attr</span>)</span></code>
+<br />
+Open a file on the server and create a handle for future operations on
+that file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str <i>or error code</i>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the target of a symbolic link (or shortcut) on the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Delete a file, if possible.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>oldpath</span>,
+ <span class=summary-sig-arg>newpath</span>)</span></code>
+<br />
+Rename (or move) a file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove a directory if it exists.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#session_ended" class="summary-sig-name"><code>session_ended</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+The SFTP server session has just ended, either cleanly or via an
+exception.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#session_started" class="summary-sig-name"><code>session_started</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+The SFTP server session has just started.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return an <a href="paramiko.SFTPAttributes-class.html"
+class="link"><code>SFTPAttributes</code></a> object for a path on the
+server, or an error code.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.SFTPServerInterface-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>target_path</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Create a symbolic link on the server, as new pathname
+<code>path</code>, with <code>target_path</code> as the target of the
+link.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>server</span>,
+ <span class="sig-vararg">*largs</span>,
+ <span class="sig-kwarg">**kwargs</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new SFTPServerInterface object. This method does nothing by
+ default and is meant to be overridden by subclasses.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>server</b></code> -
+ the server object associated with this channel and SFTP
+ subsystem
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="canonicalize"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">canonicalize</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ <p>Return the canonical form of a path on the server. For example, if
+ the server's home folder is <code>/home/foo</code>, the path
+ <code>&quot;../betty&quot;</code> would be canonicalized to
+ <code>&quot;/home/betty&quot;</code>. Note the obvious security issues:
+ if you're serving files only from a specific folder, you probably don't
+ want this method to reveal path names outside that folder.</p>
+ <p>You may find the python methods in <code>os.path</code> useful,
+ especially <code>os.path.normpath</code> and
+ <code>os.path.realpath</code>.</p>
+ The default implementation returns <code>os.path.normpath('/' +
+ path)</code>.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="chattr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chattr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>attr</span>)</span>
+ </h3>
+ Change the attributes of a file. The <code>attr</code> object will
+ contain only those fields provided by the client in its request, so you
+ should check for the presence of fields before using them.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ requested path (relative or absolute) of the file to
+ change.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>attr</b></code> -
+ requested attributes to change on the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="list_folder"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">list_folder</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ <p>Return a list of files within a given folder. The <code>path</code>
+ will use posix notation (<code>&quot;/&quot;</code> separates folder
+ names) and may be an absolute or relative path.</p>
+ <p>The list of files is expected to be a list of <a
+ href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> objects, which are similar
+ in structure to the objects returned by <code>os.stat</code>. In
+ addition, each object should have its <code>filename</code> field
+ filled in, since this is important to a directory listing and not
+ normally present in <code>os.stat</code> results. The method
+ <code>SFTPAttributes.from_stat</code> will usually do what you
+ want.</p>
+ In case of an error, you should return one of the
+ <code>SFTP_*</code> error codes, such as <a
+ href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED"
+ class="link"><code>SFTP_PERMISSION_DENIED</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the requested path (relative or absolute) to be listed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a list of the files in the given folder, using <a
+ href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> objects.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list of <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> You should normalize the given <code>path</code> first (see the
+<code>os.path</code> module) and check appropriate permissions before
+returning the list of files. Be careful of malicious clients attempting
+to use relative paths to escape restricted folders, if you're doing a
+direct translation from the SFTP server path to your local
+filesystem.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="lstat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">lstat</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Return an <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> object for a path on the
+ server, or an error code. If your server supports symbolic links (also
+ known as &quot;aliases&quot;), you should <i>not</i> follow them --
+ instead, you should return data on the symlink or alias itself. (<a
+ href="../private/paramiko.SFTPServerInterface-class.html#stat"
+ class="link"><code>stat</code></a> is the corresponding call that
+ follows symlinks/aliases.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the requested path (relative or absolute) to fetch file
+ statistics for.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an attributes object for the given file, or an SFTP error code
+ (like <a
+ href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED"
+ class="link"><code>SFTP_PERMISSION_DENIED</code></a>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="mkdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">mkdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>attr</span>)</span>
+ </h3>
+ <p>Create a new directory with the given attributes. The
+ <code>attr</code> object may be considered a &quot;hint&quot; and
+ ignored.</p>
+ The <code>attr</code> object will contain only those fields provided
+ by the client in its request, so you should use <code>hasattr</code> to
+ check for the presense of fields before using them. In some cases, the
+ <code>attr</code> object may be completely empty.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ requested path (relative or absolute) of the new folder.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>attr</b></code> -
+ requested attributes of the new folder.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SFTP error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="open"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>flags</span>,
+ <span class=sig-arg>attr</span>)</span>
+ </h3>
+ <p>Open a file on the server and create a handle for future operations
+ on that file. On success, a new object subclassed from <a
+ href="paramiko.SFTPHandle-class.html"
+ class="link"><code>SFTPHandle</code></a> should be returned. This
+ handle will be used for future operations on the file (read, write,
+ etc). On failure, an error code such as <a
+ href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED"
+ class="link"><code>SFTP_PERMISSION_DENIED</code></a> should be
+ returned.</p>
+ <code>flags</code> contains the requested mode for opening
+ (read-only, write-append, etc) as a bitset of flags from the
+ <code>os</code> module:
+ <ul>
+ <li>
+ <code>os.O_RDONLY</code>
+ </li>
+ <li>
+ <code>os.O_WRONLY</code>
+ </li>
+ <li>
+ <code>os.O_RDWR</code>
+ </li>
+ <li>
+ <code>os.O_APPEND</code>
+ </li>
+ <li>
+ <code>os.O_CREAT</code>
+ </li>
+ <li>
+ <code>os.O_TRUNC</code>
+ </li>
+ <li>
+ <code>os.O_EXCL</code>
+ </li>
+ </ul>
+ <p>(One of <code>os.O_RDONLY</code>, <code>os.O_WRONLY</code>, or
+ <code>os.O_RDWR</code> will always be set.)</p>
+ The <code>attr</code> object contains requested attributes of the
+ file if it has to be created. Some or all attribute fields may be
+ missing if the client didn't specify them.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the requested path (relative or absolute) of the file to be
+ opened.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>flags</b></code> -
+ flags or'd together from the <code>os</code> module indicating
+ the requested mode for opening the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>attr</b></code> -
+ requested attributes of the file if it is newly created.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.SFTPHandle-class.html"
+ class="link"><code>SFTPHandle</code></a> <i>or error code</i>.
+ &#64;rtype <a href="paramiko.SFTPHandle-class.html"
+ class="link"><code>SFTPHandle</code></a>
+ </dd>
+ </dl>
+<p><b>Note:</b> The SFTP protocol defines all files to be in &quot;binary&quot; mode.
+There is no equivalent to python's &quot;text&quot; mode.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="readlink"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">readlink</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Return the target of a symbolic link (or shortcut) on the server. If
+ the specified path doesn't refer to a symbolic link, an error should be
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path (relative or absolute) of the symbolic link.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the target path of the symbolic link, or an error code like <a
+ href="../private/paramiko-module.html#SFTP_NO_SUCH_FILE"
+ class="link"><code>SFTP_NO_SUCH_FILE</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str <i>or error code</i>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="remove"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">remove</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Delete a file, if possible.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the requested path (relative or absolute) of the file to
+ delete.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SFTP error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="rename"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">rename</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>oldpath</span>,
+ <span class=sig-arg>newpath</span>)</span>
+ </h3>
+ Rename (or move) a file. The SFTP specification implies that this
+ method can be used to move an existing file into a different folder,
+ and since there's no other (easy) way to move files via SFTP, it's
+ probably a good idea to implement &quot;move&quot; in this method too,
+ even for files that cross disk partition boundaries, if at all
+ possible.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>oldpath</b></code> -
+ the requested path (relative or absolute) of the existing
+ file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>newpath</b></code> -
+ the requested new path of the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SFTP error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> You should return an error if a file with the same name as
+<code>newpath</code> already exists. (The rename operation should be
+non-desctructive.)
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="rmdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">rmdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Remove a directory if it exists. The <code>path</code> should refer
+ to an existing, empty folder -- otherwise this method should return an
+ error.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ requested path (relative or absolute) of the folder to
+ remove.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SFTP error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="session_ended"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">session_ended</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ The SFTP server session has just ended, either cleanly or via an
+ exception. This method is meant to be overridden to perform any
+ necessary cleanup before this <code>SFTPServerInterface</code> object
+ is destroyed.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="session_started"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">session_started</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ The SFTP server session has just started. This method is meant to be
+ overridden to perform any necessary setup before handling callbacks
+ from SFTP operations.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Return an <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> object for a path on the
+ server, or an error code. If your server supports symbolic links (also
+ known as &quot;aliases&quot;), you should follow them. (<a
+ href="../private/paramiko.SFTPServerInterface-class.html#lstat"
+ class="link"><code>lstat</code></a> is the corresponding call that
+ doesn't follow symlinks/aliases.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the requested path (relative or absolute) to fetch file
+ statistics for.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an attributes object for the given file, or an SFTP error code
+ (like <a
+ href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED"
+ class="link"><code>SFTP_PERMISSION_DENIED</code></a>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="symlink"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">symlink</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>target_path</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Create a symbolic link on the server, as new pathname
+ <code>path</code>, with <code>target_path</code> as the target of the
+ link.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>target_path</b></code> -
+ path (relative or absolute) of the target for this new
+ symbolic link.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>path</b></code> -
+ path (relative or absolute) of the symbolic link to
+ create.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an error code like <code>SFTP_OK</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SSHException-class.html b/docs/private/paramiko.SSHException-class.html
new file mode 100644
index 0000000..74d34e6
--- /dev/null
+++ b/docs/private/paramiko.SSHException-class.html
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SSHException</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SSHException
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SSHException-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SSHException-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class SSHException</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <b>SSHException</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a>,
+ <a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a>,
+ <a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>PartialAuthentication</code></a></dd></dl>
+
+<hr/>
+
+Exception raised by failures in SSH2 protocol negotiation or logic
+errors.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SecurityOptions-class.html b/docs/private/paramiko.SecurityOptions-class.html
new file mode 100644
index 0000000..1763962
--- /dev/null
+++ b/docs/private/paramiko.SecurityOptions-class.html
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SecurityOptions</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SecurityOptions
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SecurityOptions-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SecurityOptions-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SecurityOptions</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>SecurityOptions</b>
+</pre><br />
+
+<hr/>
+
+<p>Simple object containing the security preferences of an ssh transport.
+These are tuples of acceptable ciphers, digests, key types, and key
+exchange algorithms, listed in order of preference.</p>
+Changing the contents and/or order of these fields affects the
+underlying <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> (but only if you change them
+before starting the session). If you try to add an algorithm that
+paramiko doesn't recognize, <code>ValueError</code> will be raised. If
+you try to assign something besides a tuple to one of the fields,
+<code>TypeError</code> will be raised.
+<hr/>
+
+<p><b>Since:</b> ivysaur
+</p>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>transport</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SecurityOptions-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_ciphers"></a><span class="summary-sig"><span class="summary-sig-name">_get_ciphers</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_compression"></a><span class="summary-sig"><span class="summary-sig-name">_get_compression</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_digests"></a><span class="summary-sig"><span class="summary-sig-name">_get_digests</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_kex"></a><span class="summary-sig"><span class="summary-sig-name">_get_kex</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_key_types"></a><span class="summary-sig"><span class="summary-sig-name">_get_key_types</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set"></a><span class="summary-sig"><span class="summary-sig-name">_set</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>orig</span>,
+ <span class=summary-sig-arg>x</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_ciphers"></a><span class="summary-sig"><span class="summary-sig-name">_set_ciphers</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_compression"></a><span class="summary-sig"><span class="summary-sig-name">_set_compression</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_digests"></a><span class="summary-sig"><span class="summary-sig-name">_set_digests</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_kex"></a><span class="summary-sig"><span class="summary-sig-name">_set_kex</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_key_types"></a><span class="summary-sig"><span class="summary-sig-name">_set_key_types</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF PROPERTY SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Property Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#ciphers"><code>ciphers</code></a></b>: Symmetric encryption ciphers</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#compression"><code>compression</code></a></b>: Compression algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#digests"><code>digests</code></a></b>: Digest (one-way hash) algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#kex"><code>kex</code></a></b>: Key exchange algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#key_types"><code>key_types</code></a></b>: Public-key algorithms</td></tr></table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
+<td><b><a href="paramiko.SecurityOptions-class.html#__slots__"><code>__slots__</code></a></b> = <span title="['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport']"><code>['ciphers',&nbsp;'digests',&nbsp;'key_types',&nbsp;'kex',&nbsp;'<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>member_descriptor</code></font></td>
+<td><b><a href="../private/paramiko.SecurityOptions-class.html#_transport"><code>_transport</code></a></b> = <span title="&lt;member '_transport' of 'SecurityOptions' objects&gt;"><code>&lt;member&nbsp;'_transport'&nbsp;of&nbsp;'SecurityOptions'&nbsp;o<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Returns a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ str
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF PROPERTY DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Property Details</th></tr>
+</table>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="ciphers"></a>
+<h3>ciphers</h3>
+Symmetric encryption ciphers
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Get Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_ciphers" class="summary-sig-name"><code>_get_ciphers</code></a>(<span class=summary-sig-arg>self</span>)</span>
+ </dd>
+ <dt><b>Set Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_ciphers" class="summary-sig-name"><code>_set_ciphers</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span>
+ </dd>
+ </dl>
+ </dd>
+</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="compression"></a>
+<h3>compression</h3>
+Compression algorithms
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Get Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_compression" class="summary-sig-name"><code>_get_compression</code></a>(<span class=summary-sig-arg>self</span>)</span>
+ </dd>
+ <dt><b>Set Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_compression" class="summary-sig-name"><code>_set_compression</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span>
+ </dd>
+ </dl>
+ </dd>
+</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="digests"></a>
+<h3>digests</h3>
+Digest (one-way hash) algorithms
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Get Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_digests" class="summary-sig-name"><code>_get_digests</code></a>(<span class=summary-sig-arg>self</span>)</span>
+ </dd>
+ <dt><b>Set Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_digests" class="summary-sig-name"><code>_set_digests</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span>
+ </dd>
+ </dl>
+ </dd>
+</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="kex"></a>
+<h3>kex</h3>
+Key exchange algorithms
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Get Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_kex" class="summary-sig-name"><code>_get_kex</code></a>(<span class=summary-sig-arg>self</span>)</span>
+ </dd>
+ <dt><b>Set Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_kex" class="summary-sig-name"><code>_set_kex</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span>
+ </dd>
+ </dl>
+ </dd>
+</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="key_types"></a>
+<h3>key_types</h3>
+Public-key algorithms
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Get Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_get_key_types" class="summary-sig-name"><code>_get_key_types</code></a>(<span class=summary-sig-arg>self</span>)</span>
+ </dd>
+ <dt><b>Set Method:</b></dt>
+ <dd><span class="summary-sig"><a href="../private/paramiko.SecurityOptions-class.html#_set_key_types" class="summary-sig-name"><code>_set_key_types</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span>
+ </dd>
+ </dl>
+ </dd>
+</dl></td></tr></table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__slots__"></a>
+<h3>__slots__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>list</code>
+
+ </dd>
+<span title="['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport']"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport'<span class="variable-linewrap">\</span>
+] </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_transport"></a>
+<h3>_transport</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>member_descriptor</code>
+
+ </dd>
+<span title="&lt;member '_transport' of 'SecurityOptions' objects&gt;"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+&lt;member '_transport' of 'SecurityOptions' objects&gt; </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.ServerInterface-class.html b/docs/private/paramiko.ServerInterface-class.html
new file mode 100644
index 0000000..5cf358f
--- /dev/null
+++ b/docs/private/paramiko.ServerInterface-class.html
@@ -0,0 +1,894 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ServerInterface</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;ServerInterface
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.ServerInterface-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type ServerInterface</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>ServerInterface</b>
+</pre><br />
+
+<hr/>
+
+<p>This class defines an interface for controlling the behavior of
+paramiko in server mode.</p>
+Methods on this class are called from paramiko's primary thread, so
+you shouldn't do too much work in them. (Certainly nothing that blocks or
+sleeps.)
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int or <a href="paramiko.server.InteractiveQuery-class.html"
+ class="link"><code>InteractiveQuery</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_interactive" class="summary-sig-name"><code>check_auth_interactive</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>submethods</span>)</span></code>
+<br />
+Begin an interactive authentication challenge, if supported.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int or <a href="paramiko.server.InteractiveQuery-class.html"
+ class="link"><code>InteractiveQuery</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_interactive_response" class="summary-sig-name"><code>check_auth_interactive_response</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>responses</span>)</span></code>
+<br />
+Continue or finish an interactive authentication challenge, if
+supported.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_none" class="summary-sig-name"><code>check_auth_none</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>)</span></code>
+<br />
+Determine if a client may open channels with no (further)
+authentication.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_password" class="summary-sig-name"><code>check_auth_password</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Determine if a given username and password supplied by the client is
+acceptable for use in authentication.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_auth_publickey" class="summary-sig-name"><code>check_auth_publickey</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>key</span>)</span></code>
+<br />
+Determine if a given key supplied by the client is acceptable for use
+in authentication.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_exec_request" class="summary-sig-name"><code>check_channel_exec_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>command</span>)</span></code>
+<br />
+Determine if a shell command will be executed for the client.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_pty_request" class="summary-sig-name"><code>check_channel_pty_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>term</span>,
+ <span class=summary-sig-arg>width</span>,
+ <span class=summary-sig-arg>height</span>,
+ <span class=summary-sig-arg>pixelwidth</span>,
+ <span class=summary-sig-arg>pixelheight</span>,
+ <span class=summary-sig-arg>modes</span>)</span></code>
+<br />
+Determine if a pseudo-terminal of the given dimensions (usually
+requested for shell access) can be provided on the given channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_request" class="summary-sig-name"><code>check_channel_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>kind</span>,
+ <span class=summary-sig-arg>chanid</span>)</span></code>
+<br />
+Determine if a channel request of a given type will be granted, and
+return <code>OPEN_SUCCEEDED</code> or an error code.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_shell_request" class="summary-sig-name"><code>check_channel_shell_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>)</span></code>
+<br />
+Determine if a shell will be provided to the client on the given
+channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_subsystem_request" class="summary-sig-name"><code>check_channel_subsystem_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+<br />
+Determine if a requested subsystem will be provided to the client on
+the given channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_channel_window_change_request" class="summary-sig-name"><code>check_channel_window_change_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>width</span>,
+ <span class=summary-sig-arg>height</span>,
+ <span class=summary-sig-arg>pixelwidth</span>,
+ <span class=summary-sig-arg>pixelheight</span>)</span></code>
+<br />
+Determine if the pseudo-terminal on the given channel can be
+resized.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#check_global_request" class="summary-sig-name"><code>check_global_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>kind</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Handle a global request of the given <code>kind</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ServerInterface-class.html#get_allowed_auths" class="summary-sig-name"><code>get_allowed_auths</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>)</span></code>
+<br />
+Return a list of authentication methods supported by the server.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__init__(...) initializes x; see x.__class__.__doc__ for
+signature</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="check_auth_interactive"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_auth_interactive</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>submethods</span>)</span>
+ </h3>
+ <p>Begin an interactive authentication challenge, if supported. You
+ should override this method in server mode if you want to support the
+ <code>&quot;keyboard-interactive&quot;</code> auth type, which requires
+ you to send a series of questions for the client to answer.</p>
+ <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if this auth method isn't
+ supported. Otherwise, you should return an <a
+ href="paramiko.server.InteractiveQuery-class.html"
+ class="link"><code>InteractiveQuery</code></a> object containing the
+ prompts and instructions for the user. The response will be sent via a
+ call to <a
+ href="../private/paramiko.ServerInterface-class.html#check_auth_interactive_response"
+ class="link"><code>check_auth_interactive_response</code></a>.</p>
+ The default implementation always returns <a
+ href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username of the authenticating client
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>submethods</b></code> -
+ a comma-separated list of methods preferred by the client
+ (usually empty)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if this auth method
+ isn't supported; otherwise an object containing queries for the
+ user
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or <a href="paramiko.server.InteractiveQuery-class.html"
+ class="link"><code>InteractiveQuery</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_auth_interactive_response"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_auth_interactive_response</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>responses</span>)</span>
+ </h3>
+ <p>Continue or finish an interactive authentication challenge, if
+ supported. You should override this method in server mode if you want
+ to support the <code>&quot;keyboard-interactive&quot;</code> auth
+ type.</p>
+ <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if the responses are not
+ accepted, <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL"
+ class="link"><code>AUTH_SUCCESSFUL</code></a> if the responses are
+ accepted and complete the authentication, or <a
+ href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL"
+ class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if your
+ authentication is stateful, and this set of responses is accepted for
+ authentication, but more authentication is required. (In this latter
+ case, <a
+ href="../private/paramiko.ServerInterface-class.html#get_allowed_auths"
+ class="link"><code>get_allowed_auths</code></a> will be called to
+ report to the client what options it has for continuing the
+ authentication.)</p>
+ <p>If you wish to continue interactive authentication with more
+ questions, you may return an <a
+ href="paramiko.server.InteractiveQuery-class.html"
+ class="link"><code>InteractiveQuery</code></a> object, which should
+ cause the client to respond with more answers, calling this method
+ again. This cycle can continue indefinitely.</p>
+ The default implementation always returns <a
+ href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>responses</b></code> -
+ list of responses from the client
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list(str))</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if the authentication
+ fails; <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL"
+ class="link"><code>AUTH_SUCCESSFUL</code></a> if it succeeds; <a
+ href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL"
+ class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if the
+ interactive auth is successful, but authentication must continue;
+ otherwise an object containing queries for the user
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or <a href="paramiko.server.InteractiveQuery-class.html"
+ class="link"><code>InteractiveQuery</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_auth_none"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_auth_none</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>)</span>
+ </h3>
+ <p>Determine if a client may open channels with no (further)
+ authentication.</p>
+ <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if the client must
+ authenticate, or <a
+ href="../private/paramiko-module.html#AUTH_SUCCESSFUL"
+ class="link"><code>AUTH_SUCCESSFUL</code></a> if it's okay for the
+ client to not authenticate.</p>
+ The default implementation always returns <a
+ href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username of the client.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if the authentication
+ fails; <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL"
+ class="link"><code>AUTH_SUCCESSFUL</code></a> if it succeeds.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_auth_password"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_auth_password</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>password</span>)</span>
+ </h3>
+ <p>Determine if a given username and password supplied by the client is
+ acceptable for use in authentication.</p>
+ <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if the password is not
+ accepted, <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL"
+ class="link"><code>AUTH_SUCCESSFUL</code></a> if the password is
+ accepted and completes the authentication, or <a
+ href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL"
+ class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if your
+ authentication is stateful, and this key is accepted for
+ authentication, but more authentication is required. (In this latter
+ case, <a
+ href="../private/paramiko.ServerInterface-class.html#get_allowed_auths"
+ class="link"><code>get_allowed_auths</code></a> will be called to
+ report to the client what options it has for continuing the
+ authentication.)</p>
+ The default implementation always returns <a
+ href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username of the authenticating client.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ the password given by the client.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if the authentication
+ fails; <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL"
+ class="link"><code>AUTH_SUCCESSFUL</code></a> if it succeeds; <a
+ href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL"
+ class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if the
+ password auth is successful, but authentication must
+ continue.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_auth_publickey"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_auth_publickey</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>key</span>)</span>
+ </h3>
+ <p>Determine if a given key supplied by the client is acceptable for
+ use in authentication. You should override this method in server mode
+ to check the username and key and decide if you would accept a
+ signature made using this key.</p>
+ <p>Return <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if the key is not accepted,
+ <a href="../private/paramiko-module.html#AUTH_SUCCESSFUL"
+ class="link"><code>AUTH_SUCCESSFUL</code></a> if the key is accepted
+ and completes the authentication, or <a
+ href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL"
+ class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if your
+ authentication is stateful, and this password is accepted for
+ authentication, but more authentication is required. (In this latter
+ case, <a
+ href="../private/paramiko.ServerInterface-class.html#get_allowed_auths"
+ class="link"><code>get_allowed_auths</code></a> will be called to
+ report to the client what options it has for continuing the
+ authentication.)</p>
+ <p>Note that you don't have to actually verify any key signtature here.
+ If you're willing to accept the key, paramiko will do the work of
+ verifying the client's signature.</p>
+ The default implementation always returns <a
+ href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username of the authenticating client
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>key</b></code> -
+ the key object provided by the client
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <a href="../private/paramiko-module.html#AUTH_FAILED"
+ class="link"><code>AUTH_FAILED</code></a> if the client can't
+ authenticate with this key; <a
+ href="../private/paramiko-module.html#AUTH_SUCCESSFUL"
+ class="link"><code>AUTH_SUCCESSFUL</code></a> if it can; <a
+ href="../private/paramiko-module.html#AUTH_PARTIALLY_SUCCESSFUL"
+ class="link"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a> if it can
+ authenticate with this key but must continue with
+ authentication
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_channel_exec_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_channel_exec_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>,
+ <span class=sig-arg>command</span>)</span>
+ </h3>
+ <p>Determine if a shell command will be executed for the client. If
+ this method returns <code>True</code>, the channel should be connected
+ to the stdin, stdout, and stderr of the shell command.</p>
+ The default implementation always returns <code>False</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ the <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> the request arrived on.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ <dd><code><b>command</b></code> -
+ the command to execute.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if this channel is now hooked up to the
+ stdin, stdout, and stderr of the executing command;
+ <code>False</code> if the command will not be executed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_channel_pty_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_channel_pty_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>,
+ <span class=sig-arg>term</span>,
+ <span class=sig-arg>width</span>,
+ <span class=sig-arg>height</span>,
+ <span class=sig-arg>pixelwidth</span>,
+ <span class=sig-arg>pixelheight</span>,
+ <span class=sig-arg>modes</span>)</span>
+ </h3>
+ <p>Determine if a pseudo-terminal of the given dimensions (usually
+ requested for shell access) can be provided on the given channel.</p>
+ The default implementation always returns <code>False</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ the <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> the pty request arrived
+ on.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ <dd><code><b>term</b></code> -
+ type of terminal requested (for example,
+ <code>&quot;vt100&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>width</b></code> -
+ width of screen in characters.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>height</b></code> -
+ height of screen in characters.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>pixelwidth</b></code> -
+ width of screen in pixels, if known (may be <code>0</code> if
+ unknown).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>pixelheight</b></code> -
+ height of screen in pixels, if known (may be <code>0</code> if
+ unknown).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the psuedo-terminal has been allocated;
+ <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_channel_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_channel_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>kind</span>,
+ <span class=sig-arg>chanid</span>)</span>
+ </h3>
+ <p>Determine if a channel request of a given type will be granted, and
+ return <code>OPEN_SUCCEEDED</code> or an error code. This method is
+ called in server mode when the client requests a channel, after
+ authentication is complete.</p>
+ If you allow channel requests (and an ssh server that didn't would
+ be useless), you should also override some of the channel request
+ methods below, which are used to determine which services will be
+ allowed on a given channel:
+ <ul>
+ <li>
+ <a
+ href="../private/paramiko.ServerInterface-class.html#check_channel_pty_request"
+ class="link"><code>check_channel_pty_request</code></a>
+ </li>
+ <li>
+ <a
+ href="../private/paramiko.ServerInterface-class.html#check_channel_shell_request"
+ class="link"><code>check_channel_shell_request</code></a>
+ </li>
+ <li>
+ <a
+ href="../private/paramiko.ServerInterface-class.html#check_channel_subsystem_request"
+ class="link"><code>check_channel_subsystem_request</code></a>
+ </li>
+ <li>
+ <a
+ href="../private/paramiko.ServerInterface-class.html#check_channel_window_change_request"
+ class="link"><code>check_channel_window_change_request</code></a>
+ </li>
+ </ul>
+ <p>The <code>chanid</code> parameter is a small number that uniquely
+ identifies the channel within a <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>. A <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> object is not created unless this
+ method returns <code>OPEN_SUCCEEDED</code> -- once a <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> object is created, you can call
+ <a href="paramiko.Channel-class.html#get_id"
+ class="link"><code>Channel.get_id</code></a> to retrieve the channel
+ ID.</p>
+ The return value should either be <code>OPEN_SUCCEEDED</code> (or
+ <code>0</code>) to allow the channel request, or one of the following
+ error codes to reject it:
+ <ul>
+ <li>
+ <code>OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED</code>
+ </li>
+ <li>
+ <code>OPEN_FAILED_CONNECT_FAILED</code>
+ </li>
+ <li>
+ <code>OPEN_FAILED_UNKNOWN_CHANNEL_TYPE</code>
+ </li>
+ <li>
+ <code>OPEN_FAILED_RESOURCE_SHORTAGE</code>
+ </li>
+ </ul>
+ The default implementation always returns
+ <code>OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>kind</b></code> -
+ the kind of channel the client would like to open (usually
+ <code>&quot;session&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>chanid</b></code> -
+ ID of the channel
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a success or failure code (listed above)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_channel_shell_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_channel_shell_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>)</span>
+ </h3>
+ <p>Determine if a shell will be provided to the client on the given
+ channel. If this method returns <code>True</code>, the channel should
+ be connected to the stdin/stdout of a shell (or something that acts
+ like a shell).</p>
+ The default implementation always returns <code>False</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ the <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> the request arrived on.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if this channel is now hooked up to a shell;
+ <code>False</code> if a shell can't or won't be provided.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_channel_subsystem_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_channel_subsystem_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>,
+ <span class=sig-arg>name</span>)</span>
+ </h3>
+ <p>Determine if a requested subsystem will be provided to the client on
+ the given channel. If this method returns <code>True</code>, all future
+ I/O through this channel will be assumed to be connected to the
+ requested subsystem. An example of a subsystem is
+ <code>sftp</code>.</p>
+ The default implementation checks for a subsystem handler assigned
+ via <a href="paramiko.Transport-class.html#set_subsystem_handler"
+ class="link"><code>Transport.set_subsystem_handler</code></a>. If one
+ has been set, the handler is invoked and this method returns
+ <code>True</code>. Otherwise it returns <code>False</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ the <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> the pty request arrived
+ on.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if this channel is now hooked up to the
+ requested subsystem; <code>False</code> if that subsystem can't
+ or won't be provided.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> Because the default implementation uses the <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> to identify valid subsystems, you
+probably won't need to override this method.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_channel_window_change_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_channel_window_change_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>,
+ <span class=sig-arg>width</span>,
+ <span class=sig-arg>height</span>,
+ <span class=sig-arg>pixelwidth</span>,
+ <span class=sig-arg>pixelheight</span>)</span>
+ </h3>
+ <p>Determine if the pseudo-terminal on the given channel can be
+ resized. This only makes sense if a pty was previously allocated on
+ it.</p>
+ The default implementation always returns <code>False</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ the <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> the pty request arrived
+ on.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ <dd><code><b>width</b></code> -
+ width of screen in characters.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>height</b></code> -
+ height of screen in characters.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>pixelwidth</b></code> -
+ width of screen in pixels, if known (may be <code>0</code> if
+ unknown).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>pixelheight</b></code> -
+ height of screen in pixels, if known (may be <code>0</code> if
+ unknown).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the terminal was resized;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="check_global_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check_global_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>kind</span>,
+ <span class=sig-arg>msg</span>)</span>
+ </h3>
+ <p>Handle a global request of the given <code>kind</code>. This method
+ is called in server mode and client mode, whenever the remote host
+ makes a global request. If there are any arguments to the request, they
+ will be in <code>msg</code>.</p>
+ <p>There aren't any useful global requests defined, aside from port
+ forwarding, so usually this type of request is an extension to the
+ protocol.</p>
+ <p>If the request was successful and you would like to return
+ contextual data to the remote host, return a tuple. Items in the tuple
+ will be sent back with the successful result. (Note that the items in
+ the tuple can only be strings, ints, longs, or bools.)</p>
+ The default implementation always returns <code>False</code>,
+ indicating that it does not support any global requests.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>kind</b></code> -
+ the kind of global request being made.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>msg</b></code> -
+ any extra arguments to the request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> or a tuple of data if the request was
+ granted; <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_allowed_auths"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_allowed_auths</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>)</span>
+ </h3>
+ <p>Return a list of authentication methods supported by the server.
+ This list is sent to clients attempting to authenticate, to inform them
+ of authentication methods that might be successful.</p>
+ <p>The &quot;list&quot; is actually a string of comma-separated names
+ of types of authentication. Possible values are
+ <code>&quot;password&quot;</code>, <code>&quot;publickey&quot;</code>,
+ and <code>&quot;none&quot;</code>.</p>
+ The default implementation always returns
+ <code>&quot;password&quot;</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username requesting authentication.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a comma-separated list of authentication types
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.SubsystemHandler-class.html b/docs/private/paramiko.SubsystemHandler-class.html
new file mode 100644
index 0000000..1d8116a
--- /dev/null
+++ b/docs/private/paramiko.SubsystemHandler-class.html
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SubsystemHandler</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SubsystemHandler
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.SubsystemHandler-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SubsystemHandler-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SubsystemHandler</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+
+ |
+ <a href="threading.Thread-class.html"><code>Thread</code></a> --+
+ |
+ <b>SubsystemHandler</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></dd></dl>
+
+<hr/>
+
+<p>Handler for a subsytem in server mode. If you create a subclass of
+this class and pass it to <a
+href="paramiko.Transport-class.html#set_subsystem_handler"
+class="link"><code>Transport.set_subsystem_handler</code></a>, an object
+of this class will be created for each request for this subsystem. Each
+new object will be executed within its own new thread by calling <a
+href="paramiko.SubsystemHandler-class.html#start_subsystem"
+class="link"><code>start_subsystem</code></a>. When that method
+completes, the channel is closed.</p>
+For example, if you made a subclass <code>MP3Handler</code> and
+registered it as the handler for subsystem <code>&quot;mp3&quot;</code>,
+then whenever a client has successfully authenticated and requests
+subsytem <code>&quot;mp3&quot;</code>, an object of class
+<code>MP3Handler</code> will be created, and <a
+href="paramiko.SubsystemHandler-class.html#start_subsystem"
+class="link"><code>start_subsystem</code></a> will be called on it from a
+new thread.
+<hr/>
+
+<p><b>Since:</b> ivysaur
+</p>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>server</span>)</span></code>
+<br />
+Create a new handler for a channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#finish_subsystem" class="summary-sig-name"><code>finish_subsystem</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Perform any cleanup at the end of a subsystem.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#get_server" class="summary-sig-name"><code>get_server</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the <a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> object associated with this
+channel and subsystem.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#start_subsystem" class="summary-sig-name"><code>start_subsystem</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>transport</span>,
+ <span class=summary-sig-arg>channel</span>)</span></code>
+<br />
+Process an ssh subsystem in server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_run"></a><span class="summary-sig"><span class="summary-sig-name">_run</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#run" class="summary-sig-name"><code>run</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>daemonic</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/threading.Thread-class.html#_set_daemon" class="summary-sig-name"><code>_set_daemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from _Verbose</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/threading._Verbose-class.html#_note" class="summary-sig-name"><code>_note</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>format</span>,
+ <span class="summary-sig-vararg">*args</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>bool</code></font></td>
+<td><b><a href="../private/threading.Thread-class.html#__initialized"><code>_Thread__initialized</code></a></b> = <span title="False"><code>False </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>server</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new handler for a channel. This is used by <a
+ href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a> to start up a new handler
+ when a channel requests this subsystem. You don't need to override this
+ method, but if you do, be sure to pass the <code>channel</code> and
+ <code>name</code> parameters through to the original
+ <code>__init__</code> method here.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ the channel associated with this subsystem request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>server</b></code> -
+ the server object for the session that started this
+ subsystem
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="threading.Thread-class.html#__init__"><code>threading.Thread.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="finish_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">finish_subsystem</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Perform any cleanup at the end of a subsystem. The default
+ implementation just closes the channel.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_server"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_server</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the <a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a> object associated with
+ this channel and subsystem.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="start_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">start_subsystem</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>transport</span>,
+ <span class=sig-arg>channel</span>)</span>
+ </h3>
+ <p>Process an ssh subsystem in server mode. This method is called on a
+ new object (and in a new thread) for each subsystem request. It is
+ assumed that all subsystem logic will take place here, and when the
+ subsystem is finished, this method will return. After this method
+ returns, the channel is closed.</p>
+ The combination of <code>transport</code> and <code>channel</code>
+ are unique; this handler corresponds to exactly one <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> on one <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>transport</b></code> -
+ the server-mode <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>)</i>
+ <dd><code><b>channel</b></code> -
+ the channel associated with this subsystem request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> It is the responsibility of this method to exit if the underlying <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> is closed. This can be done by
+checking <a href="paramiko.Transport-class.html#is_active"
+class="link"><code>Transport.is_active</code></a> or noticing an EOF on
+the <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>. If this method loops forever
+without checking for this case, your python interpreter may refuse to
+exit because this thread will still be running.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.Transport-class.html b/docs/private/paramiko.Transport-class.html
new file mode 100644
index 0000000..5b96b90
--- /dev/null
+++ b/docs/private/paramiko.Transport-class.html
@@ -0,0 +1,2151 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Transport</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Transport
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.Transport-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.Transport-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Transport</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+
+ |
+ <a href="threading.Thread-class.html"><code>Thread</code></a> --+
+ |
+ <b>Transport</b>
+</pre><br />
+
+<hr/>
+
+An SSH Transport attaches to a stream (usually a socket), negotiates
+an encrypted session, authenticates, and then creates stream tunnels,
+called <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>s, across the session. Multiple
+channels can be multiplexed across a single session (and often are, in
+the case of port forwardings).
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sock</span>)</span></code>
+<br />
+Create a new SSH session over an existing socket, or socket-like
+object.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#accept" class="summary-sig-name"><code>accept</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+<br />
+Return the next channel opened by the client over this transport, in
+server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#add_server_key" class="summary-sig-name"><code>add_server_key</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>key</span>)</span></code>
+<br />
+Add a host key to the list of keys used for server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_interactive" class="summary-sig-name"><code>auth_interactive</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>handler</span>,
+ <span class=summary-sig-arg>submethods</span>)</span></code>
+<br />
+Authenticate to the server interactively.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_none" class="summary-sig-name"><code>auth_none</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>)</span></code>
+<br />
+Try to authenticate to the server using no authentication at all.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_password" class="summary-sig-name"><code>auth_password</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>password</span>,
+ <span class=summary-sig-arg>event</span>,
+ <span class=summary-sig-arg>fallback</span>)</span></code>
+<br />
+Authenticate to the server using a password.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_publickey" class="summary-sig-name"><code>auth_publickey</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>key</span>,
+ <span class=summary-sig-arg>event</span>)</span></code>
+<br />
+Authenticate to the server using a private key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close this session, and any open channels that are tied to it.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#connect" class="summary-sig-name"><code>connect</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>hostkey</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>password</span>,
+ <span class=summary-sig-arg>pkey</span>)</span></code>
+<br />
+Negotiate an SSH2 session, and optionally verify the server's host key
+and authenticate using a password or private key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> Exception
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_exception" class="summary-sig-name"><code>get_exception</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return any exception that happened during the last server request.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_hexdump" class="summary-sig-name"><code>get_hexdump</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return <code>True</code> if the transport is currently logging hex
+dumps of protocol traffic.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_log_channel" class="summary-sig-name"><code>get_log_channel</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the channel name used for this transport's logging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_remote_server_key" class="summary-sig-name"><code>get_remote_server_key</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the host key of the server (in client mode).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SecurityOptions-class.html"
+ class="link"><code>SecurityOptions</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_security_options" class="summary-sig-name"><code>get_security_options</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a <a href="paramiko.SecurityOptions-class.html"
+class="link"><code>SecurityOptions</code></a> object which can be used to
+tweak the encryption algorithms this transport will permit, and the order
+of preference for them.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_server_key" class="summary-sig-name"><code>get_server_key</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the active host key, in server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_username" class="summary-sig-name"><code>get_username</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the username this connection is authenticated for.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#global_request" class="summary-sig-name"><code>global_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>kind</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>wait</span>)</span></code>
+<br />
+Make a global request to the remote host.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#is_active" class="summary-sig-name"><code>is_active</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return true if this session is active (open).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#is_authenticated" class="summary-sig-name"><code>is_authenticated</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return true if this session is active and authenticated.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#load_server_moduli" class="summary-sig-name"><code>load_server_moduli</code></a>(<span class=summary-sig-arg>filename</span>)</span></code>
+<br />
+<i>(optional)</i> Load a file of prime moduli for use in doing
+group-exchange key negotiation in server mode. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_channel" class="summary-sig-name"><code>open_channel</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>kind</span>,
+ <span class=summary-sig-arg>dest_addr</span>,
+ <span class=summary-sig-arg>src_addr</span>)</span></code>
+<br />
+Request a new channel to the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_session" class="summary-sig-name"><code>open_session</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Request a new channel to the server, of type
+<code>&quot;session&quot;</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_sftp_client" class="summary-sig-name"><code>open_sftp_client</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Create an SFTP client channel from an open transport.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#renegotiate_keys" class="summary-sig-name"><code>renegotiate_keys</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Force this session to switch to new keys.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="run"></a><span class="summary-sig"><span class="summary-sig-name">run</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#send_ignore" class="summary-sig-name"><code>send_ignore</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>bytes</span>)</span></code>
+<br />
+Send a junk packet across the encrypted link.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_hexdump" class="summary-sig-name"><code>set_hexdump</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>hexdump</span>)</span></code>
+<br />
+Turn on/off logging a hex dump of protocol traffic at DEBUG level in
+the logs.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_keepalive" class="summary-sig-name"><code>set_keepalive</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>interval</span>)</span></code>
+<br />
+Turn on/off keepalive packets (default is off).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_log_channel" class="summary-sig-name"><code>set_log_channel</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+<br />
+Set the channel for this transport's logging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_subsystem_handler" class="summary-sig-name"><code>set_subsystem_handler</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>handler</span>,
+ <span class="summary-sig-vararg">*larg</span>,
+ <span class="summary-sig-kwarg">**kwarg</span>)</span></code>
+<br />
+Set the handler class for a subsystem in server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#start_client" class="summary-sig-name"><code>start_client</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>event</span>)</span></code>
+<br />
+Negotiate a new SSH2 session as a client.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#start_server" class="summary-sig-name"><code>start_server</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>event</span>,
+ <span class=summary-sig-arg>server</span>)</span></code>
+<br />
+Negotiate a new SSH2 session as a server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="stop_thread"></a><span class="summary-sig"><span class="summary-sig-name">stop_thread</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#use_compression" class="summary-sig-name"><code>use_compression</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>compress</span>)</span></code>
+<br />
+Turn on/off compression.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_activate_inbound" class="summary-sig-name"><code>_activate_inbound</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+switch on newly negotiated encryption parameters for inbound
+traffic</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_activate_outbound" class="summary-sig-name"><code>_activate_outbound</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+switch on newly negotiated encryption parameters for outbound
+traffic</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_auth_trigger"></a><span class="summary-sig"><span class="summary-sig-name">_auth_trigger</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_check_banner"></a><span class="summary-sig"><span class="summary-sig-name">_check_banner</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_compute_key" class="summary-sig-name"><code>_compute_key</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>id</span>,
+ <span class=summary-sig-arg>nbytes</span>)</span></code>
+<br />
+id is 'A' - 'F' for the various keys used by ssh</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_expect_packet" class="summary-sig-name"><code>_expect_packet</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>type</span>)</span></code>
+<br />
+used by a kex object to register the next packet type it expects to
+see</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_cipher"></a><span class="summary-sig"><span class="summary-sig-name">_get_cipher</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>key</span>,
+ <span class=summary-sig-arg>iv</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_get_modulus_pack" class="summary-sig-name"><code>_get_modulus_pack</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+used by KexGex to find primes for group exchange</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_get_subsystem_handler"></a><span class="summary-sig"><span class="summary-sig-name">_get_subsystem_handler</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_log"></a><span class="summary-sig"><span class="summary-sig-name">_log</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_negotiate_keys"></a><span class="summary-sig"><span class="summary-sig-name">_negotiate_keys</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_channel_open"></a><span class="summary-sig"><span class="summary-sig-name">_parse_channel_open</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_channel_open_failure"></a><span class="summary-sig"><span class="summary-sig-name">_parse_channel_open_failure</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_channel_open_success"></a><span class="summary-sig"><span class="summary-sig-name">_parse_channel_open_success</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_debug"></a><span class="summary-sig"><span class="summary-sig-name">_parse_debug</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_disconnect"></a><span class="summary-sig"><span class="summary-sig-name">_parse_disconnect</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_global_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_global_request</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_kex_init"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kex_init</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_newkeys"></a><span class="summary-sig"><span class="summary-sig-name">_parse_newkeys</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_request_failure"></a><span class="summary-sig"><span class="summary-sig-name">_parse_request_failure</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_request_success"></a><span class="summary-sig"><span class="summary-sig-name">_parse_request_success</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_send_kex_init" class="summary-sig-name"><code>_send_kex_init</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+announce to the other side that we'd like to negotiate keys, and what
+kind of key negotiation we support.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_send_message"></a><span class="summary-sig"><span class="summary-sig-name">_send_message</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_send_user_message" class="summary-sig-name"><code>_send_user_message</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+send a message, but block if we're in key negotiation.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_set_K_H" class="summary-sig-name"><code>_set_K_H</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>k</span>,
+ <span class=summary-sig-arg>h</span>)</span></code>
+<br />
+used by a kex object to set the K (root key) and H (exchange hash)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.Transport-class.html#_unlink_channel" class="summary-sig-name"><code>_unlink_channel</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>chanid</span>)</span></code>
+<br />
+used by a Channel to remove itself from the active channel list</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_verify_key"></a><span class="summary-sig"><span class="summary-sig-name">_verify_key</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>host_key</span>,
+ <span class=summary-sig-arg>sig</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>daemonic</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/threading.Thread-class.html#_set_daemon" class="summary-sig-name"><code>_set_daemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from _Verbose</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/threading._Verbose-class.html#_note" class="summary-sig-name"><code>_note</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>format</span>,
+ <span class="summary-sig-vararg">*args</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_channel_handler_table"><code>_channel_handler_table</code></a></b> = <span title="{96: &lt;unbound method Channel._handle_eof&gt;, 97: &lt;unbound method Channel._handle_close&gt;, 98: &lt;unbound method Channel._handle_request&gt;, 99: &lt;unbound method Channel._request_success&gt;, 100: &lt;unbound method Channel._request_failed&gt;, 93: &lt;unbound method Channel._window_adjust&gt;, 94: &lt;unbound method Channel._feed&gt;, 95: &lt;unbound method Channel._feed_extended&gt;}"><code>{96:&nbsp;&lt;unbound&nbsp;method&nbsp;Channel._h<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_cipher_info"><code>_cipher_info</code></a></b> = <span title="{'blowfish-cbc': {'block-size': 8, 'key-size': 16, 'class': &lt;module 'Crypto.Cipher.Blowfish' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/Blowfish.so'&gt;, 'mode': 2}, '3des-cbc': {'block-size': 8, 'key-size': 24, 'class': &lt;module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'&gt;, 'mode': 2}, 'aes256-cbc': {'block-size': 16, 'key-size': 32, 'class': &lt;module 'Crypto.Cipher.AES' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/AES.so'&gt;, 'mode': 2}, 'aes128-cbc': {'block-size': 16, 'key-size': 16, 'class': &lt;module 'Crypto.Cipher.AES' from '/usr/lib/py..."><code>{'blowfish-cbc':&nbsp;{'block-size':&nbsp;8,&nbsp;'key-s<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_CLIENT_ID"><code>_CLIENT_ID</code></a></b> = <span title="'paramiko_1.5.2'"><code><span class="variable-quote">'</span>paramiko_1.5.2<span class="variable-quote">'</span> </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_compression_info"><code>_compression_info</code></a></b> = <span title="{'none': (None, None), 'zlib': (&lt;class 'paramiko.compress.ZlibCompressor'&gt;, &lt;class 'paramiko.compress.ZlibDecompressor'&gt;), 'zlib@openssh.com': (&lt;class 'paramiko.compress.ZlibCompressor'&gt;, &lt;class 'paramiko.compress.ZlibDecompressor'&gt;)}"><code>{'none':&nbsp;(None,&nbsp;None),&nbsp;'zlib':&nbsp;(&lt;cla<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_handler_table"><code>_handler_table</code></a></b> = <span title="{80: &lt;function _parse_global_request at 0xb7b13fb4&gt;, 81: &lt;function _parse_request_success at 0xb7b1e02c&gt;, 82: &lt;function _parse_request_failure at 0xb7b1e064&gt;, 20: &lt;function _negotiate_keys at 0xb7b13dbc&gt;, 21: &lt;function _parse_newkeys at 0xb7b13f44&gt;, 90: &lt;function _parse_channel_open at 0xb7b1e10c&gt;, 91: &lt;function _parse_channel_open_success at 0xb7b1e09c&gt;, 92: &lt;function _parse_channel_open_failure at 0xb7b1e0d4&gt;}"><code>{80:&nbsp;&lt;function&nbsp;_parse_global_request&nbsp;at<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_kex_info"><code>_kex_info</code></a></b> = <span title="{'diffie-hellman-group1-sha1': &lt;class 'paramiko.kex_group1.KexGroup1'&gt;, 'diffie-hellman-group-exchange-sha1': &lt;class 'paramiko.kex_gex.KexGex'&gt;}"><code>{'diffie-hellman-group1-sha1':&nbsp;&lt;class&nbsp;'param<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_key_info"><code>_key_info</code></a></b> = <span title="{'ssh-dss': &lt;class 'paramiko.DSSKey'&gt;, 'ssh-rsa': &lt;class 'paramiko.RSAKey'&gt;}"><code>{'ssh-dss':&nbsp;&lt;class&nbsp;'paramiko.DSSKey'&gt;,&nbsp;'ssh-<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_mac_info"><code>_mac_info</code></a></b> = <span title="{'hmac-sha1': {'class': &lt;module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'&gt;, 'size': 20}, 'hmac-md5-96': {'class': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'&gt;, 'size': 12}, 'hmac-sha1-96': {'class': &lt;module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'&gt;, 'size': 12}, 'hmac-md5': {'class': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'&gt;, 'size': 16}}"><code>{'hmac-sha1':&nbsp;{'class':&nbsp;&lt;module&nbsp;'Crypto.Hash<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>NoneType</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_modulus_pack"><code>_modulus_pack</code></a></b> = <span title="None">None&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_preferred_ciphers"><code>_preferred_ciphers</code></a></b> = <span title="('aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc')"><code>('aes128-cbc',&nbsp;'blowfish-cbc',&nbsp;'aes<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_preferred_compression"><code>_preferred_compression</code></a></b> = <span title="('none',)"><code>('none',) </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_preferred_kex"><code>_preferred_kex</code></a></b> = <span title="('diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1')"><code>('diffie-hellman-group1-sha1',&nbsp;'diffie-<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_preferred_keys"><code>_preferred_keys</code></a></b> = <span title="('ssh-rsa', 'ssh-dss')"><code>('ssh-rsa',&nbsp;'ssh-dss') </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_preferred_macs"><code>_preferred_macs</code></a></b> = <span title="('hmac-sha1', 'hmac-md5', 'hmac-sha1-96', 'hmac-md5-96')"><code>('hmac-sha1',&nbsp;'hmac-md5',&nbsp;'hmac-sha1-9<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="../private/paramiko.Transport-class.html#_PROTO_ID"><code>_PROTO_ID</code></a></b> = <span title="'2.0'"><code><span class="variable-quote">'</span>2.0<span class="variable-quote">'</span> </code>
+</span></td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>bool</code></font></td>
+<td><b><a href="../private/threading.Thread-class.html#__initialized"><code>_Thread__initialized</code></a></b> = <span title="False"><code>False </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>sock</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ <p>Create a new SSH session over an existing socket, or socket-like
+ object. This only creates the Transport object; it doesn't begin the
+ SSH session yet. Use <a href="paramiko.Transport-class.html#connect"
+ class="link"><code>connect</code></a> or <a
+ href="paramiko.Transport-class.html#start_client"
+ class="link"><code>start_client</code></a> to begin a client session,
+ or <a href="paramiko.Transport-class.html#start_server"
+ class="link"><code>start_server</code></a> to begin a server
+ session.</p>
+ If the object is not actually a socket, it must have the following
+ methods:
+ <ul>
+ <li>
+ <code>send(str)</code>: Writes from 1 to <code>len(str)</code>
+ bytes, and returns an int representing the number of bytes written.
+ Returns 0 or raises <code>EOFError</code> if the stream has been
+ closed.
+ </li>
+ <li>
+ <code>recv(int)</code>: Reads from 1 to <code>int</code> bytes
+ and returns them as a string. Returns 0 or raises
+ <code>EOFError</code> if the stream has been closed.
+ </li>
+ <li>
+ <code>close()</code>: Closes the socket.
+ </li>
+ <li>
+ <code>settimeout(n)</code>: Sets a (float) timeout on I/O
+ operations.
+ </li>
+ </ul>
+ For ease of use, you may also pass in an address (as a tuple) or a
+ host string as the <code>sock</code> argument. (A host string is a
+ hostname with an optional port (separated by
+ <code>&quot;:&quot;</code>) which will be converted into a tuple of
+ <code>(hostname, port)</code>.) A socket will be connected to this
+ address and used for communication. Exceptions from the
+ <code>socket</code> call may be thrown in this case.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>sock</b></code> -
+ a socket or socket-like object to create the session over.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=socket)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="threading.Thread-class.html#__init__"><code>threading.Thread.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Returns a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ str
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="threading.Thread-class.html#__repr__"><code>threading.Thread.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="accept"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">accept</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>timeout</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Return the next channel opened by the client over this transport, in
+ server mode. If no channel is opened before the given timeout,
+ <code>None</code> is returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>timeout</b></code> -
+ seconds to wait for a channel, or <code>None</code> to wait
+ forever
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new Channel opened by the client
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_server_key"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_server_key</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>key</span>)</span>
+ </h3>
+ Add a host key to the list of keys used for server mode. When
+ behaving as a server, the host key is used to sign certain packets
+ during the SSH2 negotiation, so that the client can trust that we are
+ who we say we are. Because this is used for signing, the key must
+ contain private key info, not just the public half. Only one key of
+ each type (RSA or DSS) is kept.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>key</b></code> -
+ the host key to add, usually an <a
+ href="paramiko.RSAKey-class.html"
+ class="link"><code>RSAKey</code></a> or <a
+ href="paramiko.DSSKey-class.html"
+ class="link"><code>DSSKey</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="auth_interactive"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_interactive</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>handler</span>,
+ <span class=sig-arg>submethods</span>=<span class=sig-default>''</span>)</span>
+ </h3>
+ <p>Authenticate to the server interactively. A handler is used to
+ answer arbitrary questions from the server. On many servers, this is
+ just a dumb wrapper around PAM.</p>
+ <p>This method will block until the authentication succeeds or fails,
+ peroidically calling the handler asynchronously to get answers to
+ authentication questions. The handler may be called more than once if
+ the server continues to ask questions.</p>
+ <p>The handler is expected to be a callable that will handle calls of
+ the form: <code>handler(title, instructions, prompt_list)</code>. The
+ <code>title</code> is meant to be a dialog-window title, and the
+ <code>instructions</code> are user instructions (both are strings).
+ <code>prompt_list</code> will be a list of prompts, each prompt being a
+ tuple of <code>(str, bool)</code>. The string is the prompt and the
+ boolean indicates whether the user text should be echoed.</p>
+ <p>A sample call would thus be: <code>handler('title', 'instructions',
+ [('Password:', False)])</code>.</p>
+ <p>The handler should return a list or tuple of answers to the server's
+ questions.</p>
+ If the server requires multi-step authentication (which is very
+ rare), this method will return a list of auth types permissible for the
+ next step. Otherwise, in the normal case, an empty list is
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>handler</b></code> -
+ a handler for responding to server questions
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=callable)</i>
+ <dd><code><b>submethods</b></code> -
+ a string list of desired submethods (optional)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of auth types permissible for the next stage of
+ authentication (normally empty).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>BadAuthenticationType</b></code> -
+ if public-key authentication isn't allowed by the server for
+ this user
+ <dd><code><b>SSHException</b></code> -
+ if the authentication failed
+ </dl>
+<p><b>Since:</b> 1.5
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="auth_none"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_none</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>)</span>
+ </h3>
+ Try to authenticate to the server using no authentication at all.
+ This will almost always fail. It may be useful for determining the list
+ of authentication types supported by the server, by catching the <a
+ href="paramiko.BadAuthenticationType-class.html"
+ class="link"><code>BadAuthenticationType</code></a> exception
+ raised.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of auth types permissible for the next stage of
+ authentication (normally empty)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>BadAuthenticationType</b></code> -
+ if &quot;none&quot; authentication isn't allowed by the server
+ for this user
+ <dd><code><b>SSHException</b></code> -
+ if the authentication failed due to a network error
+ </dl>
+<p><b>Since:</b> 1.5
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="auth_password"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_password</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>password</span>,
+ <span class=sig-arg>event</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>fallback</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ <p>Authenticate to the server using a password. The username and
+ password are sent over an encrypted link.</p>
+ <p>If an <code>event</code> is passed in, this method will return
+ immediately, and the event will be triggered once authentication
+ succeeds or fails. On success, <a
+ href="paramiko.Transport-class.html#is_authenticated"
+ class="link"><code>is_authenticated</code></a> will return
+ <code>True</code>. On failure, you may use <a
+ href="paramiko.Transport-class.html#get_exception"
+ class="link"><code>get_exception</code></a> to get more detailed error
+ information.</p>
+ <p>Since 1.1, if no event is passed, this method will block until the
+ authentication succeeds or fails. On failure, an exception is raised.
+ Otherwise, the method simply returns.</p>
+ <p>Since 1.5, if no event is passed and <code>fallback</code> is
+ <code>True</code> (the default), if the server doesn't support plain
+ password authentication but does support so-called
+ &quot;keyboard-interactive&quot; mode, an attempt will be made to
+ authenticate using this interactive mode. If it fails, the normal
+ exception will be thrown as if the attempt had never been made. This is
+ useful for some recent Gentoo and Debian distributions, which turn off
+ plain password authentication in a misguided belief that interactive
+ authentication is &quot;more secure&quot;. (It's not.)</p>
+ If the server requires multi-step authentication (which is very
+ rare), this method will return a list of auth types permissible for the
+ next step. Otherwise, in the normal case, an empty list is
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>password</b></code> -
+ the password to authenticate with
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>event</b></code> -
+ an event to trigger when the authentication attempt is
+ complete (whether it was successful or not)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=threading.Event)</i>
+ <dd><code><b>fallback</b></code> -
+ <code>True</code> if an attempt at an automated
+ &quot;interactive&quot; password auth should be made if the
+ server doesn't support normal password auth
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of auth types permissible for the next stage of
+ authentication (normally empty)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>BadAuthenticationType</b></code> -
+ if password authentication isn't allowed by the server for
+ this user (and no event was passed in)
+ <dd><code><b>SSHException</b></code> -
+ if the authentication failed (and no event was passed in)
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="auth_publickey"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_publickey</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>key</span>,
+ <span class=sig-arg>event</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p>Authenticate to the server using a private key. The key is used to
+ sign data from the server, so it must include the private part.</p>
+ <p>If an <code>event</code> is passed in, this method will return
+ immediately, and the event will be triggered once authentication
+ succeeds or fails. On success, <a
+ href="paramiko.Transport-class.html#is_authenticated"
+ class="link"><code>is_authenticated</code></a> will return
+ <code>True</code>. On failure, you may use <a
+ href="paramiko.Transport-class.html#get_exception"
+ class="link"><code>get_exception</code></a> to get more detailed error
+ information.</p>
+ <p>Since 1.1, if no event is passed, this method will block until the
+ authentication succeeds or fails. On failure, an exception is raised.
+ Otherwise, the method simply returns.</p>
+ If the server requires multi-step authentication (which is very
+ rare), this method will return a list of auth types permissible for the
+ next step. Otherwise, in the normal case, an empty list is
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>key</b></code> -
+ the private key to authenticate with
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ <dd><code><b>event</b></code> -
+ an event to trigger when the authentication attempt is
+ complete (whether it was successful or not)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=threading.Event)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of auth types permissible for the next stage of
+ authentication (normally empty).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>BadAuthenticationType</b></code> -
+ if public-key authentication isn't allowed by the server for
+ this user (and no event was passed in).
+ <dd><code><b>SSHException</b></code> -
+ if the authentication failed (and no event was passed in).
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close this session, and any open channels that are tied to it.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="connect"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">connect</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>hostkey</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>username</span>=<span class=sig-default>''</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>pkey</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p>Negotiate an SSH2 session, and optionally verify the server's host
+ key and authenticate using a password or private key. This is a
+ shortcut for <a href="paramiko.Transport-class.html#start_client"
+ class="link"><code>start_client</code></a>, <a
+ href="paramiko.Transport-class.html#get_remote_server_key"
+ class="link"><code>get_remote_server_key</code></a>, and <a
+ href="paramiko.Transport-class.html#auth_password"
+ class="link"><code>Transport.auth_password</code></a> or <a
+ href="paramiko.Transport-class.html#auth_publickey"
+ class="link"><code>Transport.auth_publickey</code></a>. Use those
+ methods if you want more control.</p>
+ You can use this method immediately after creating a Transport to
+ negotiate encryption with a server. If it fails, an exception will be
+ thrown. On success, the method will return cleanly, and an encrypted
+ session exists. You may immediately call <a
+ href="paramiko.Transport-class.html#open_channel"
+ class="link"><code>open_channel</code></a> or <a
+ href="paramiko.Transport-class.html#open_session"
+ class="link"><code>open_session</code></a> to get a <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> object, which is used for data
+ transfer.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hostkey</b></code> -
+ the host key expected from the server, or <code>None</code> if
+ you don't want to do host key verification.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ a password to use for authentication, if you want to use
+ password authentication; otherwise <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>pkey</b></code> -
+ a private key to use for authentication, if you want to use
+ private key authentication; otherwise <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if the SSH2 negotiation fails, the host key supplied by the
+ server is incorrect, or authentication fails.
+ </dl>
+<p><b>Note:</b> If you fail to supply a password or private key, this method may
+succeed, but a subsequent <a
+href="paramiko.Transport-class.html#open_channel"
+class="link"><code>open_channel</code></a> or <a
+href="paramiko.Transport-class.html#open_session"
+class="link"><code>open_session</code></a> call may fail because you
+haven't authenticated yet.
+</p>
+
+<p><b>Since:</b> doduo
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_exception"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_exception</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return any exception that happened during the last server request.
+ This can be used to fetch more specific error information after using
+ calls like <a href="paramiko.Transport-class.html#start_client"
+ class="link"><code>start_client</code></a>. The exception (if any) is
+ cleared after this call.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an exception, or <code>None</code> if there is no stored
+ exception.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=Exception)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_hexdump"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_hexdump</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return <code>True</code> if the transport is currently logging hex
+ dumps of protocol traffic.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if hex dumps are being logged
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_log_channel"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_log_channel</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the channel name used for this transport's logging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ channel name.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_remote_server_key"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_remote_server_key</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the host key of the server (in client mode).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ public key of the remote server.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if no session is currently active.
+ </dl>
+<p><b>Note:</b> Previously this call returned a tuple of (key type, key string). You
+can get the same effect by calling <a
+href="../private/paramiko.PKey-class.html#get_name"
+class="link"><code>PKey.get_name</code></a> for the key type, and
+<code>str(key)</code> for the key string.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_security_options"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_security_options</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return a <a href="paramiko.SecurityOptions-class.html"
+ class="link"><code>SecurityOptions</code></a> object which can be used
+ to tweak the encryption algorithms this transport will permit, and the
+ order of preference for them.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an object that can be used to change the preferred algorithms
+ for encryption, digest (hash), public key, and key exchange.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SecurityOptions-class.html"
+ class="link"><code>SecurityOptions</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> ivysaur
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_server_key"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_server_key</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the active host key, in server mode. After negotiating with
+ the client, this method will return the negotiated host key. If only
+ one type of host key was set with <a
+ href="paramiko.Transport-class.html#add_server_key"
+ class="link"><code>add_server_key</code></a>, that's the only key that
+ will ever be returned. But in cases where you have set more than one
+ type of host key (for example, an RSA key and a DSS key), the key type
+ will be negotiated by the client, and this method will return the key
+ of the type agreed on. If the host key has not been negotiated yet,
+ <code>None</code> is returned. In client mode, the behavior is
+ undefined.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ host key of the type negotiated by the client, or
+ <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_username"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_username</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the username this connection is authenticated for. If the
+ session is not authenticated (or authentication failed), this method
+ returns <code>None</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ username that was authenticated, or <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="global_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">global_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>kind</span>,
+ <span class=sig-arg>data</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>wait</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ Make a global request to the remote host. These are normally
+ extensions to the SSH2 protocol.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>kind</b></code> -
+ name of the request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>data</b></code> -
+ an optional tuple containing additional data to attach to the
+ request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=tuple)</i>
+ <dd><code><b>wait</b></code> -
+ <code>True</code> if this method should not return until a
+ response is received; <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> containing possible
+ additional data if the request was successful (or an empty <a
+ href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> if <code>wait</code> was
+ <code>False</code>); <code>None</code> if the request was
+ denied.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="is_active"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">is_active</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return true if this session is active (open).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ True if the session is still active (open); False if the
+ session is closed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="is_authenticated"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">is_authenticated</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return true if this session is active and authenticated.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ True if the session is still open and has been authenticated
+ successfully; False if authentication failed and/or the session
+ is closed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="open_channel"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open_channel</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>kind</span>,
+ <span class=sig-arg>dest_addr</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>src_addr</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Request a new channel to the server. <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>s are socket-like objects used for
+ the actual transfer of data across the session. You may only request a
+ channel after negotiating encryption (using <a
+ href="paramiko.Transport-class.html#connect"
+ class="link"><code>connect</code></a> or <a
+ href="paramiko.Transport-class.html#start_client"
+ class="link"><code>start_client</code></a>) and authenticating.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>kind</b></code> -
+ the kind of channel requested (usually
+ <code>&quot;session&quot;</code>,
+ <code>&quot;forwarded-tcpip&quot;</code> or
+ <code>&quot;direct-tcpip&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>dest_addr</b></code> -
+ the destination address of this port forwarding, if
+ <code>kind</code> is <code>&quot;forwarded-tcpip&quot;</code> or
+ <code>&quot;direct-tcpip&quot;</code> (ignored for other channel
+ types).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=(str, int))</i>
+ <dd><code><b>src_addr</b></code> -
+ the source address of this port forwarding, if
+ <code>kind</code> is <code>&quot;forwarded-tcpip&quot;</code> or
+ <code>&quot;direct-tcpip&quot;</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=(str, int))</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> on success, or
+ <code>None</code> if the request is rejected or the session ends
+ prematurely.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="open_session"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open_session</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Request a new channel to the server, of type
+ <code>&quot;session&quot;</code>. This is just an alias for
+ <code>open_channel('session')</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> on success, or
+ <code>None</code> if the request is rejected or the session ends
+ prematurely.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="open_sftp_client"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open_sftp_client</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Create an SFTP client channel from an open transport. On success, an
+ SFTP session will be opened with the remote host, and a new SFTPClient
+ object will be returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a> object, referring to an
+ sftp session (channel) across this transport
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="renegotiate_keys"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">renegotiate_keys</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Force this session to switch to new keys. Normally this is done
+ automatically after the session hits a certain number of packets or
+ bytes sent or received, but this method gives you the option of forcing
+ new keys whenever you want. Negotiating new keys causes a pause in
+ traffic both ways as the two sides swap keys and do computations. This
+ method returns when the session has switched to new keys, or the
+ session has died mid-negotiation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ True if the renegotiation was successful, and the link is
+ using new keys; False if the session dropped during
+ renegotiation.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="send_ignore"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send_ignore</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>bytes</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Send a junk packet across the encrypted link. This is sometimes used
+ to add &quot;noise&quot; to a connection to confuse would-be attackers.
+ It can also be used as a keep-alive for long lived connections
+ traversing firewalls.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>bytes</b></code> -
+ the number of random bytes to send in the payload of the
+ ignored packet -- defaults to a random number from 10 to 41.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_hexdump"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_hexdump</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>hexdump</span>)</span>
+ </h3>
+ Turn on/off logging a hex dump of protocol traffic at DEBUG level in
+ the logs. Normally you would want this off (which is the default), but
+ if you are debugging something, it may be useful.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hexdump</b></code> -
+ <code>True</code> to log protocol traffix (in hex) to the log;
+ <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_keepalive"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_keepalive</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>interval</span>)</span>
+ </h3>
+ Turn on/off keepalive packets (default is off). If this is set,
+ after <code>interval</code> seconds without sending any data over the
+ connection, a &quot;keepalive&quot; packet will be sent (and ignored by
+ the remote host). This can be useful to keep connections alive over a
+ NAT, for example.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>interval</b></code> -
+ seconds to wait before sending a keepalive packet (or 0 to
+ disable keepalives).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_log_channel"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_log_channel</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>)</span>
+ </h3>
+ Set the channel for this transport's logging. The default is
+ <code>&quot;paramiko.transport&quot;</code> but it can be set to
+ anything you want. (See the <code>logging</code> module for more info.)
+ SSH Channels will log to a sub-channel of the one specified.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ new channel name for logging.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_subsystem_handler"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_subsystem_handler</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>handler</span>,
+ <span class="sig-vararg">*larg</span>,
+ <span class="sig-kwarg">**kwarg</span>)</span>
+ </h3>
+ <p>Set the handler class for a subsystem in server mode. If a request
+ for this subsystem is made on an open ssh channel later, this handler
+ will be constructed and called -- see <a
+ href="paramiko.SubsystemHandler-class.html"
+ class="link"><code>SubsystemHandler</code></a> for more detailed
+ documentation.</p>
+ Any extra parameters (including keyword arguments) are saved and
+ passed to the <a href="paramiko.SubsystemHandler-class.html"
+ class="link"><code>SubsystemHandler</code></a> constructor later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ name of the subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>handler</b></code> -
+ subclass of <a href="paramiko.SubsystemHandler-class.html"
+ class="link"><code>SubsystemHandler</code></a> that handles this
+ subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=class)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="start_client"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">start_client</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>event</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p>Negotiate a new SSH2 session as a client. This is the first step
+ after creating a new <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>. A separate thread is created
+ for protocol negotiation.</p>
+ <p>If an event is passed in, this method returns immediately. When
+ negotiation is done (successful or not), the given <code>Event</code>
+ will be triggered. On failure, <a
+ href="paramiko.Transport-class.html#is_active"
+ class="link"><code>is_active</code></a> will return
+ <code>False</code>.</p>
+ <p>(Since 1.4) If <code>event</code> is <code>None</code>, this method
+ will not return until negotation is done. On success, the method
+ returns normally. Otherwise an SSHException is raised.</p>
+ After a successful negotiation, you will usually want to
+ authenticate, calling <a
+ href="paramiko.Transport-class.html#auth_password"
+ class="link"><code>auth_password</code></a> or <a
+ href="paramiko.Transport-class.html#auth_publickey"
+ class="link"><code>auth_publickey</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>event</b></code> -
+ an event to trigger when negotiation is complete
+ (optional)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=threading.Event)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if negotiation fails (and no <code>event</code> was passed
+ in)
+ </dl>
+<p><b>Notes:</b>
+<ul>
+ <li><a href="paramiko.Transport-class.html#connect"
+class="link"><code>connect</code></a> is a simpler method for connecting
+as a client.
+</li>
+ <li>After calling this method (or <a
+href="paramiko.Transport-class.html#start_server"
+class="link"><code>start_server</code></a> or <a
+href="paramiko.Transport-class.html#connect"
+class="link"><code>connect</code></a>), you should no longer directly
+read from or write to the original socket object.
+
+ </li>
+</ul></p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="start_server"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">start_server</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>event</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>server</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p>Negotiate a new SSH2 session as a server. This is the first step
+ after creating a new <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> and setting up your server host
+ key(s). A separate thread is created for protocol negotiation.</p>
+ <p>If an event is passed in, this method returns immediately. When
+ negotiation is done (successful or not), the given <code>Event</code>
+ will be triggered. On failure, <a
+ href="paramiko.Transport-class.html#is_active"
+ class="link"><code>is_active</code></a> will return
+ <code>False</code>.</p>
+ <p>(Since 1.4) If <code>event</code> is <code>None</code>, this method
+ will not return until negotation is done. On success, the method
+ returns normally. Otherwise an SSHException is raised.</p>
+ <p>After a successful negotiation, the client will need to
+ authenticate. Override the methods <a
+ href="../private/paramiko.ServerInterface-class.html#get_allowed_auths"
+ class="link"><code>get_allowed_auths</code></a>, <a
+ href="../private/paramiko.ServerInterface-class.html#check_auth_none"
+ class="link"><code>check_auth_none</code></a>, <a
+ href="../private/paramiko.ServerInterface-class.html#check_auth_password"
+ class="link"><code>check_auth_password</code></a>, and <a
+ href="../private/paramiko.ServerInterface-class.html#check_auth_publickey"
+ class="link"><code>check_auth_publickey</code></a> in the given
+ <code>server</code> object to control the authentication process.</p>
+ After a successful authentication, the client should request to open
+ a channel. Override <a
+ href="../private/paramiko.ServerInterface-class.html#check_channel_request"
+ class="link"><code>check_channel_request</code></a> in the given
+ <code>server</code> object to allow channels to be opened.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>event</b></code> -
+ an event to trigger when negotiation is complete.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=threading.Event)</i>
+ <dd><code><b>server</b></code> -
+ an object used to perform authentication and create <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>s.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>server.ServerInterface</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if negotiation fails (and no <code>event</code> was passed
+ in)
+ </dl>
+<p><b>Note:</b> After calling this method (or <a
+href="paramiko.Transport-class.html#start_client"
+class="link"><code>start_client</code></a> or <a
+href="paramiko.Transport-class.html#connect"
+class="link"><code>connect</code></a>), you should no longer directly
+read from or write to the original socket object.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="use_compression"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">use_compression</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>compress</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ Turn on/off compression. This will only have an affect before
+ starting the transport (ie before calling <a
+ href="paramiko.Transport-class.html#connect"
+ class="link"><code>connect</code></a>, etc). By default, compression is
+ off since it negatively affects interactive sessions and is not fully
+ tested.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>compress</b></code> -
+ <code>True</code> to ask the remote client/server to compress
+ traffic; <code>False</code> to refuse compression
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.5.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="_activate_inbound"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_activate_inbound</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ switch on newly negotiated encryption parameters for inbound
+ traffic
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_activate_outbound"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_activate_outbound</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ switch on newly negotiated encryption parameters for outbound
+ traffic
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_compute_key"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_compute_key</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>id</span>,
+ <span class=sig-arg>nbytes</span>)</span>
+ </h3>
+ id is 'A' - 'F' for the various keys used by ssh
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_expect_packet"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_expect_packet</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>type</span>)</span>
+ </h3>
+ used by a kex object to register the next packet type it expects to
+ see
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_get_modulus_pack"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_get_modulus_pack</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ used by KexGex to find primes for group exchange
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_send_kex_init"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_send_kex_init</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ announce to the other side that we'd like to negotiate keys, and
+ what kind of key negotiation we support.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_send_user_message"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_send_user_message</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ send a message, but block if we're in key negotiation. this is used
+ for user-initiated requests.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_set_K_H"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_set_K_H</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>k</span>,
+ <span class=sig-arg>h</span>)</span>
+ </h3>
+ used by a kex object to set the K (root key) and H (exchange
+ hash)
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_unlink_channel"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_unlink_channel</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>chanid</span>)</span>
+ </h3>
+ used by a Channel to remove itself from the active channel list
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF STATIC METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Static Method Details</th></tr>
+</table>
+
+<a name="load_server_moduli"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">load_server_moduli</span>(<span class=sig-arg>filename</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p><i>(optional)</i> Load a file of prime moduli for use in doing
+ group-exchange key negotiation in server mode. It's a rather obscure
+ option and can be safely ignored.</p>
+ In server mode, the remote client may request
+ &quot;group-exchange&quot; key negotiation, which asks the server to
+ send a random prime number that fits certain criteria. These primes are
+ pretty difficult to compute, so they can't be generated on demand. But
+ many systems contain a file of suitable primes (usually named something
+ like <code>/etc/ssh/moduli</code>). If you call
+ <code>load_server_moduli</code> and it returns <code>True</code>, then
+ this file of primes has been loaded and we will support
+ &quot;group-exchange&quot; in server mode. Otherwise server mode will
+ just claim that it doesn't support that method of key negotiation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ optional path to the moduli file, if you happen to know that
+ it's not in a standard location.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ True if a moduli file was successfully loaded; False
+ otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> This has no effect when used in client mode.
+</p>
+
+<p><b>Since:</b> doduo
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_channel_handler_table"></a>
+<h3>_channel_handler_table</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{96: &lt;unbound method Channel._handle_eof&gt;, 97: &lt;unbound method Channel._handle_close&gt;, 98: &lt;unbound method Channel._handle_request&gt;, 99: &lt;unbound method Channel._request_success&gt;, 100: &lt;unbound method Channel._request_failed&gt;, 93: &lt;unbound method Channel._window_adjust&gt;, 94: &lt;unbound method Channel._feed&gt;, 95: &lt;unbound method Channel._feed_extended&gt;}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{93: &lt;unbound method Channel._window_adjust&gt;,
+ 94: &lt;unbound method Channel._feed&gt;,
+ 95: &lt;unbound method Channel._feed_extended&gt;,
+ 96: &lt;unbound method Channel._handle_eof&gt;,
+ 97: &lt;unbound method Channel._handle_close&gt;,
+ 98: &lt;unbound method Channel._handle_request&gt;,
+ 99: &lt;unbound method Channel._request_success&gt;,
+ 100: &lt;unbound method Channel._request_failed&gt;} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_cipher_info"></a>
+<h3>_cipher_info</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{'blowfish-cbc': {'block-size': 8, 'key-size': 16, 'class': &lt;module 'Crypto.Cipher.Blowfish' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/Blowfish.so'&gt;, 'mode': 2}, '3des-cbc': {'block-size': 8, 'key-size': 24, 'class': &lt;module 'Crypto.Cipher.DES3' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/DES3.so'&gt;, 'mode': 2}, 'aes256-cbc': {'block-size': 16, 'key-size': 32, 'class': &lt;module 'Crypto.Cipher.AES' from '/usr/lib/python2.4/site-packages/Crypto/Cipher/AES.so'&gt;, 'mode': 2}, 'aes128-cbc': {'block-size': 16, 'key-size': 16, 'class': &lt;module 'Crypto.Cipher.AES' from '/usr/lib/py..."> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{'3des-cbc': {'block-size': 8,
+ 'class': &lt;module 'Crypto.Cipher.DES3' from '/usr/lib/pyt<span class="variable-linewrap">\</span>
+hon2.4/site-packages/Crypto/Cipher/DES3.so'&gt;,
+ 'key-size': 24,
+ 'mode': 2},
+ 'aes128-cbc': {'block-size': 16,
+ 'class': &lt;module 'Crypto.Cipher.AES' from '/usr/lib/py<span class="variable-linewrap">\</span>
+thon2.4/site-packages/Crypto/Cipher/AES.so'&gt;,
+<span class="variable-ellipsis">...</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_CLIENT_ID"></a>
+<h3>_CLIENT_ID</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'paramiko_1.5.2'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>paramiko_1.5.2<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_compression_info"></a>
+<h3>_compression_info</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{'none': (None, None), 'zlib': (&lt;class 'paramiko.compress.ZlibCompressor'&gt;, &lt;class 'paramiko.compress.ZlibDecompressor'&gt;), 'zlib@openssh.com': (&lt;class 'paramiko.compress.ZlibCompressor'&gt;, &lt;class 'paramiko.compress.ZlibDecompressor'&gt;)}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{'none': (None, None),
+ 'zlib': (&lt;class 'paramiko.compress.ZlibCompressor'&gt;,
+ &lt;class 'paramiko.compress.ZlibDecompressor'&gt;),
+ 'zlib&#64;openssh.com': (&lt;class 'paramiko.compress.ZlibCompressor'&gt;,
+ &lt;class 'paramiko.compress.ZlibDecompressor'&gt;)} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_handler_table"></a>
+<h3>_handler_table</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{80: &lt;function _parse_global_request at 0xb7b13fb4&gt;, 81: &lt;function _parse_request_success at 0xb7b1e02c&gt;, 82: &lt;function _parse_request_failure at 0xb7b1e064&gt;, 20: &lt;function _negotiate_keys at 0xb7b13dbc&gt;, 21: &lt;function _parse_newkeys at 0xb7b13f44&gt;, 90: &lt;function _parse_channel_open at 0xb7b1e10c&gt;, 91: &lt;function _parse_channel_open_success at 0xb7b1e09c&gt;, 92: &lt;function _parse_channel_open_failure at 0xb7b1e0d4&gt;}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{20: &lt;function _negotiate_keys at 0xb7b13dbc&gt;,
+ 21: &lt;function _parse_newkeys at 0xb7b13f44&gt;,
+ 80: &lt;function _parse_global_request at 0xb7b13fb4&gt;,
+ 81: &lt;function _parse_request_success at 0xb7b1e02c&gt;,
+ 82: &lt;function _parse_request_failure at 0xb7b1e064&gt;,
+ 90: &lt;function _parse_channel_open at 0xb7b1e10c&gt;,
+ 91: &lt;function _parse_channel_open_success at 0xb7b1e09c&gt;,
+ 92: &lt;function _parse_channel_open_failure at 0xb7b1e0d4&gt;} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_kex_info"></a>
+<h3>_kex_info</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{'diffie-hellman-group1-sha1': &lt;class 'paramiko.kex_group1.KexGroup1'&gt;, 'diffie-hellman-group-exchange-sha1': &lt;class 'paramiko.kex_gex.KexGex'&gt;}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{'diffie-hellman-group-exchange-sha1': &lt;class 'paramiko.kex_gex.KexGex<span class="variable-linewrap">\</span>
+'&gt;,
+ 'diffie-hellman-group1-sha1': &lt;class 'paramiko.kex_group1.KexGroup1'&gt;<span class="variable-linewrap">\</span>
+} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_key_info"></a>
+<h3>_key_info</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{'ssh-dss': &lt;class 'paramiko.DSSKey'&gt;, 'ssh-rsa': &lt;class 'paramiko.RSAKey'&gt;}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{'ssh-dss': &lt;class 'paramiko.DSSKey'&gt;, 'ssh-rsa': &lt;class 'paramiko.RSA<span class="variable-linewrap">\</span>
+Key'&gt;} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_mac_info"></a>
+<h3>_mac_info</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{'hmac-sha1': {'class': &lt;module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'&gt;, 'size': 20}, 'hmac-md5-96': {'class': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'&gt;, 'size': 12}, 'hmac-sha1-96': {'class': &lt;module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'&gt;, 'size': 12}, 'hmac-md5': {'class': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'&gt;, 'size': 16}}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{'hmac-md5': {'class': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/python<span class="variable-linewrap">\</span>
+2.4/site-packages/Crypto/Hash/MD5.pyc'&gt;,
+ 'size': 16},
+ 'hmac-md5-96': {'class': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/pyt<span class="variable-linewrap">\</span>
+hon2.4/site-packages/Crypto/Hash/MD5.pyc'&gt;,
+ 'size': 12},
+ 'hmac-sha1': {'class': &lt;module 'Crypto.Hash.SHA' from '/usr/lib/pytho<span class="variable-linewrap">\</span>
+n2.4/site-packages/Crypto/Hash/SHA.pyc'&gt;,
+<span class="variable-ellipsis">...</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_modulus_pack"></a>
+<h3>_modulus_pack</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>NoneType</code>
+
+ </dd>
+<span title="None"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+None&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_preferred_ciphers"></a>
+<h3>_preferred_ciphers</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="('aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc')"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+('aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc') </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_preferred_compression"></a>
+<h3>_preferred_compression</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="('none',)"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+('none',) </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_preferred_kex"></a>
+<h3>_preferred_kex</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="('diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1')"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+('diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1') </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_preferred_keys"></a>
+<h3>_preferred_keys</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="('ssh-rsa', 'ssh-dss')"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+('ssh-rsa', 'ssh-dss') </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_preferred_macs"></a>
+<h3>_preferred_macs</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="('hmac-sha1', 'hmac-md5', 'hmac-sha1-96', 'hmac-md5-96')"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+('hmac-sha1', 'hmac-md5', 'hmac-sha1-96', 'hmac-md5-96') </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_PROTO_ID"></a>
+<h3>_PROTO_ID</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'2.0'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>2.0<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.agent-module.html b/docs/private/paramiko.agent-module.html
new file mode 100644
index 0000000..889d9ea
--- /dev/null
+++ b/docs/private/paramiko.agent-module.html
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.agent</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;agent
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.agent-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.agent-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.agent</h2>
+
+SSH Agent interface for Unix clients.
+<hr/>
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER"><code>SSH2_AGENT_IDENTITIES_ANSWER</code></a></b> = <span title="12">12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE"><code>SSH2_AGENT_SIGN_RESPONSE</code></a></b> = <span title="14">14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES"><code>SSH2_AGENTC_REQUEST_IDENTITIES</code></a></b> = <span title="11">11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST"><code>SSH2_AGENTC_SIGN_REQUEST</code></a></b> = <span title="13">13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SSH2_AGENT_IDENTITIES_ANSWER"></a>
+<h3>SSH2_AGENT_IDENTITIES_ANSWER</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="12"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SSH2_AGENT_SIGN_RESPONSE"></a>
+<h3>SSH2_AGENT_SIGN_RESPONSE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="14"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SSH2_AGENTC_REQUEST_IDENTITIES"></a>
+<h3>SSH2_AGENTC_REQUEST_IDENTITIES</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="11"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SSH2_AGENTC_SIGN_REQUEST"></a>
+<h3>SSH2_AGENTC_SIGN_REQUEST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="13"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.auth_handler-module.html b/docs/private/paramiko.auth_handler-module.html
new file mode 100644
index 0000000..464b764
--- /dev/null
+++ b/docs/private/paramiko.auth_handler-module.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.auth_handler</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;auth_handler
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.auth_handler-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.auth_handler</h2>
+
+<a href="../private/paramiko.AuthHandler-class.html"
+class="link"><code>AuthHandler</code></a>
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.ber-module.html b/docs/private/paramiko.ber-module.html
new file mode 100644
index 0000000..03d907b
--- /dev/null
+++ b/docs/private/paramiko.ber-module.html
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ber</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;ber
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.ber-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.ber</h2>
+
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.ber.BER-class.html"><code>BER</code></a></b></td>
+ <td>Robey's tiny little attempt at a BER decoder.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Exceptions</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.ber.BERException-class.html"><code>BERException</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.ber.BER-class.html b/docs/private/paramiko.ber.BER-class.html
new file mode 100644
index 0000000..79b10ba
--- /dev/null
+++ b/docs/private/paramiko.ber.BER-class.html
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ber.BER</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.ber-module.html">Module&nbsp;ber</a> ::
+ Class&nbsp;BER
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.ber.BER-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type BER</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>BER</b>
+</pre><br />
+
+<hr/>
+
+Robey's tiny little attempt at a BER decoder.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>content</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="decode"></a><span class="summary-sig"><span class="summary-sig-name">decode</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="decode_next"></a><span class="summary-sig"><span class="summary-sig-name">decode_next</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="decode_sequence"></a><span class="summary-sig"><span class="summary-sig-name">decode_sequence</span>(<span class=summary-sig-arg>data</span>)</span></code>
+<br />
+ <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="encode"></a><span class="summary-sig"><span class="summary-sig-name">encode</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="encode_sequence"></a><span class="summary-sig"><span class="summary-sig-name">encode_sequence</span>(<span class=summary-sig-arg>data</span>)</span></code>
+<br />
+ <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="encode_tlv"></a><span class="summary-sig"><span class="summary-sig-name">encode_tlv</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>ident</span>,
+ <span class=summary-sig-arg>val</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.ber.BERException-class.html b/docs/private/paramiko.ber.BERException-class.html
new file mode 100644
index 0000000..9ae6fff
--- /dev/null
+++ b/docs/private/paramiko.ber.BERException-class.html
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ber.BERException</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.ber-module.html">Module&nbsp;ber</a> ::
+ Class&nbsp;BERException
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.ber.BERException-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class BERException</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <b>BERException</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.channel-module.html b/docs/private/paramiko.channel-module.html
new file mode 100644
index 0000000..bf3adc0
--- /dev/null
+++ b/docs/private/paramiko.channel-module.html
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.channel</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;channel
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.channel-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.channel</h2>
+
+Abstraction for an SSH2 channel.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>ChannelStderrFile</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.channel.ChannelStderrFile-class.html b/docs/private/paramiko.channel.ChannelStderrFile-class.html
new file mode 100644
index 0000000..646d24a
--- /dev/null
+++ b/docs/private/paramiko.channel.ChannelStderrFile-class.html
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.channel.ChannelStderrFile</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.channel-module.html">Module&nbsp;channel</a> ::
+ Class&nbsp;ChannelStderrFile
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.channel.ChannelStderrFile-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type ChannelStderrFile</h2>
+
+<pre class="base-tree">
+ <a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+<a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a> --+
+ |
+ <a href="../private/paramiko.ChannelFile-class.html"><code>ChannelFile</code></a> --+
+ |
+ <b>ChannelStderrFile</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#_read" class="summary-sig-name"><code>_read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+<i>(subclass override)</i> Read data from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.channel.ChannelStderrFile-class.html#_write" class="summary-sig-name"><code>_write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+<i>(subclass override)</i> Write data into the stream.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from ChannelFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.ChannelFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>whence</span>)</span></code>
+<br />
+Set the file's current position, like stdio's <code>fseek</code>.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BufferedFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__del__" class="summary-sig-name"><code>__del__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns an iterator that can be used to iterate over the lines in this
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Write out any data in the write buffer.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the next line from the input, or raises
+<code>StopIteration</code> when EOF is hit.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read at most <code>size</code> bytes from the file (less if we hit the
+end of the file first).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read one entire line from the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sizehint</span>)</span></code>
+<br />
+Read all remaining lines using <a
+href="paramiko.BufferedFile-class.html#readline"
+class="link"><code>readline</code></a> and return them as a list.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the file's current position.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write data to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sequence</span>)</span></code>
+<br />
+Write a sequence of strings to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Identical to <code>iter(f)</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_get_size" class="summary-sig-name"><code>_get_size</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+<i>(subclass override)</i> Return the size of the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_record_newline" class="summary-sig-name"><code>_record_newline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>newline</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_set_mode" class="summary-sig-name"><code>_set_mode</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Subclasses call this method to initialize the BufferedFile.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.BufferedFile-class.html#_write_all" class="summary-sig-name"><code>_write_all</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BufferedFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.BufferedFile-class.html#_DEFAULT_BUFSIZE"><code>_DEFAULT_BUFSIZE</code></a></b> = <span title="8192">8192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="_read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_read</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Read data from the stream. Return
+ <code>None</code> or raise <code>EOFError</code> to indicate EOF.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.ChannelFile-class.html#_read"><code>paramiko.ChannelFile._read</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_write</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ <i>(subclass override)</i> Write data into the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.ChannelFile-class.html#_write"><code>paramiko.ChannelFile._write</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.common-module.html b/docs/private/paramiko.common-module.html
new file mode 100644
index 0000000..5422192
--- /dev/null
+++ b/docs/private/paramiko.common-module.html
@@ -0,0 +1,1013 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.common</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;common
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.common-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.common</h2>
+
+Common constants and global variables.
+<hr/>
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#AUTH_FAILED"><code>AUTH_FAILED</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#AUTH_PARTIALLY_SUCCESSFUL"><code>AUTH_PARTIALLY_SUCCESSFUL</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#AUTH_SUCCESSFUL"><code>AUTH_SUCCESSFUL</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#CONNECTION_FAILED_CODE"><code>CONNECTION_FAILED_CODE</code></a></b> = <span title="{1: 'Administratively prohibited', 2: 'Connect failed', 3: 'Unknown channel type', 4: 'Resource shortage'}"><code>{1:&nbsp;'Administratively&nbsp;prohibite<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#CRITICAL"><code>CRITICAL</code></a></b> = <span title="50">50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#DEBUG"><code>DEBUG</code></a></b> = <span title="10">10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER"><code>DISCONNECT_AUTH_CANCELLED_BY_USER</code></a></b> = <span title="13">13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE"><code>DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</code></a></b> = <span title="14">14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#DISCONNECT_SERVICE_NOT_AVAILABLE"><code>DISCONNECT_SERVICE_NOT_AVAILABLE</code></a></b> = <span title="7">7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#ERROR"><code>ERROR</code></a></b> = <span title="40">40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#INFO"><code>INFO</code></a></b> = <span title="20">20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_CLOSE"><code>MSG_CHANNEL_CLOSE</code></a></b> = <span title="97">97&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_DATA"><code>MSG_CHANNEL_DATA</code></a></b> = <span title="94">94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_EOF"><code>MSG_CHANNEL_EOF</code></a></b> = <span title="96">96&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA"><code>MSG_CHANNEL_EXTENDED_DATA</code></a></b> = <span title="95">95&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_FAILURE"><code>MSG_CHANNEL_FAILURE</code></a></b> = <span title="100">100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN"><code>MSG_CHANNEL_OPEN</code></a></b> = <span title="90">90&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE"><code>MSG_CHANNEL_OPEN_FAILURE</code></a></b> = <span title="92">92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS"><code>MSG_CHANNEL_OPEN_SUCCESS</code></a></b> = <span title="91">91&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_REQUEST"><code>MSG_CHANNEL_REQUEST</code></a></b> = <span title="98">98&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_SUCCESS"><code>MSG_CHANNEL_SUCCESS</code></a></b> = <span title="99">99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST"><code>MSG_CHANNEL_WINDOW_ADJUST</code></a></b> = <span title="93">93&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_DEBUG"><code>MSG_DEBUG</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_DISCONNECT"><code>MSG_DISCONNECT</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_GLOBAL_REQUEST"><code>MSG_GLOBAL_REQUEST</code></a></b> = <span title="80">80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_IGNORE"><code>MSG_IGNORE</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_KEXINIT"><code>MSG_KEXINIT</code></a></b> = <span title="20">20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_NAMES"><code>MSG_NAMES</code></a></b> = <span title="{1: 'disconnect', 2: 'ignore', 3: 'unimplemented', 4: 'debug', 5: 'service-request', 6: 'service-accept', 20: 'kexinit', 21: 'newkeys', 30: 'kex30', 31: 'kex31', 32: 'kex32', 33: 'kex33', 34: 'kex34', 50: 'userauth-request', 51: 'userauth-failure', 52: 'userauth-success', 53: 'userauth--banner', 60: 'userauth-60(pk-ok/info-request)', 61: 'userauth-info-response', 80: 'global-request', 81: 'request-success', 82: 'request-failure', 90: 'channel-open', 91: 'channel-open-success', 92: 'channel-open-failure', 93: 'channel-window-adjust', 94: 'channel-data', 95: 'channel-extended-data', 96: 'chan..."><code>{1:&nbsp;'disconnect',&nbsp;2:&nbsp;'ignore',&nbsp;3:&nbsp;'unimpleme<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_NEWKEYS"><code>MSG_NEWKEYS</code></a></b> = <span title="21">21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_REQUEST_FAILURE"><code>MSG_REQUEST_FAILURE</code></a></b> = <span title="82">82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_REQUEST_SUCCESS"><code>MSG_REQUEST_SUCCESS</code></a></b> = <span title="81">81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_SERVICE_ACCEPT"><code>MSG_SERVICE_ACCEPT</code></a></b> = <span title="6">6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_SERVICE_REQUEST"><code>MSG_SERVICE_REQUEST</code></a></b> = <span title="5">5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_UNIMPLEMENTED"><code>MSG_UNIMPLEMENTED</code></a></b> = <span title="3">3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_BANNER"><code>MSG_USERAUTH_BANNER</code></a></b> = <span title="53">53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_FAILURE"><code>MSG_USERAUTH_FAILURE</code></a></b> = <span title="51">51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST"><code>MSG_USERAUTH_INFO_REQUEST</code></a></b> = <span title="60">60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_RESPONSE"><code>MSG_USERAUTH_INFO_RESPONSE</code></a></b> = <span title="61">61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_PK_OK"><code>MSG_USERAUTH_PK_OK</code></a></b> = <span title="60">60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_REQUEST"><code>MSG_USERAUTH_REQUEST</code></a></b> = <span title="50">50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#MSG_USERAUTH_SUCCESS"><code>MSG_USERAUTH_SUCCESS</code></a></b> = <span title="52">52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.common-module.html#WARNING"><code>WARNING</code></a></b> = <span title="30">30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="AUTH_FAILED"></a>
+<h3>AUTH_FAILED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="AUTH_PARTIALLY_SUCCESSFUL"></a>
+<h3>AUTH_PARTIALLY_SUCCESSFUL</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="AUTH_SUCCESSFUL"></a>
+<h3>AUTH_SUCCESSFUL</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="0"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CONNECTION_FAILED_CODE"></a>
+<h3>CONNECTION_FAILED_CODE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{1: 'Administratively prohibited', 2: 'Connect failed', 3: 'Unknown channel type', 4: 'Resource shortage'}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{1: 'Administratively prohibited',
+ 2: 'Connect failed',
+ 3: 'Unknown channel type',
+ 4: 'Resource shortage'} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CRITICAL"></a>
+<h3>CRITICAL</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="50"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="DEBUG"></a>
+<h3>DEBUG</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="10"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="DISCONNECT_AUTH_CANCELLED_BY_USER"></a>
+<h3>DISCONNECT_AUTH_CANCELLED_BY_USER</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="13"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE"></a>
+<h3>DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="14"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="DISCONNECT_SERVICE_NOT_AVAILABLE"></a>
+<h3>DISCONNECT_SERVICE_NOT_AVAILABLE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="7"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="ERROR"></a>
+<h3>ERROR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="40"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="INFO"></a>
+<h3>INFO</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="20"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_CLOSE"></a>
+<h3>MSG_CHANNEL_CLOSE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="97"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+97&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_DATA"></a>
+<h3>MSG_CHANNEL_DATA</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="94"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_EOF"></a>
+<h3>MSG_CHANNEL_EOF</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="96"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+96&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_EXTENDED_DATA"></a>
+<h3>MSG_CHANNEL_EXTENDED_DATA</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="95"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+95&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_FAILURE"></a>
+<h3>MSG_CHANNEL_FAILURE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="100"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_OPEN"></a>
+<h3>MSG_CHANNEL_OPEN</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="90"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+90&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_OPEN_FAILURE"></a>
+<h3>MSG_CHANNEL_OPEN_FAILURE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="92"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_OPEN_SUCCESS"></a>
+<h3>MSG_CHANNEL_OPEN_SUCCESS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="91"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+91&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_REQUEST"></a>
+<h3>MSG_CHANNEL_REQUEST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="98"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+98&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_SUCCESS"></a>
+<h3>MSG_CHANNEL_SUCCESS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="99"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_CHANNEL_WINDOW_ADJUST"></a>
+<h3>MSG_CHANNEL_WINDOW_ADJUST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="93"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+93&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_DEBUG"></a>
+<h3>MSG_DEBUG</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_DISCONNECT"></a>
+<h3>MSG_DISCONNECT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_GLOBAL_REQUEST"></a>
+<h3>MSG_GLOBAL_REQUEST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="80"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_IGNORE"></a>
+<h3>MSG_IGNORE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_KEXINIT"></a>
+<h3>MSG_KEXINIT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="20"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_NAMES"></a>
+<h3>MSG_NAMES</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{1: 'disconnect', 2: 'ignore', 3: 'unimplemented', 4: 'debug', 5: 'service-request', 6: 'service-accept', 20: 'kexinit', 21: 'newkeys', 30: 'kex30', 31: 'kex31', 32: 'kex32', 33: 'kex33', 34: 'kex34', 50: 'userauth-request', 51: 'userauth-failure', 52: 'userauth-success', 53: 'userauth--banner', 60: 'userauth-60(pk-ok/info-request)', 61: 'userauth-info-response', 80: 'global-request', 81: 'request-success', 82: 'request-failure', 90: 'channel-open', 91: 'channel-open-success', 92: 'channel-open-failure', 93: 'channel-window-adjust', 94: 'channel-data', 95: 'channel-extended-data', 96: 'chan..."> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{1: 'disconnect',
+ 2: 'ignore',
+ 3: 'unimplemented',
+ 4: 'debug',
+ 5: 'service-request',
+ 6: 'service-accept',
+ 20: 'kexinit',
+ 21: 'newkeys',
+<span class="variable-ellipsis">...</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_NEWKEYS"></a>
+<h3>MSG_NEWKEYS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="21"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_REQUEST_FAILURE"></a>
+<h3>MSG_REQUEST_FAILURE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="82"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_REQUEST_SUCCESS"></a>
+<h3>MSG_REQUEST_SUCCESS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="81"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_SERVICE_ACCEPT"></a>
+<h3>MSG_SERVICE_ACCEPT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="6"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_SERVICE_REQUEST"></a>
+<h3>MSG_SERVICE_REQUEST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="5"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_UNIMPLEMENTED"></a>
+<h3>MSG_UNIMPLEMENTED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="3"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_USERAUTH_BANNER"></a>
+<h3>MSG_USERAUTH_BANNER</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="53"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_USERAUTH_FAILURE"></a>
+<h3>MSG_USERAUTH_FAILURE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="51"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_USERAUTH_INFO_REQUEST"></a>
+<h3>MSG_USERAUTH_INFO_REQUEST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="60"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_USERAUTH_INFO_RESPONSE"></a>
+<h3>MSG_USERAUTH_INFO_RESPONSE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="61"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_USERAUTH_PK_OK"></a>
+<h3>MSG_USERAUTH_PK_OK</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="60"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_USERAUTH_REQUEST"></a>
+<h3>MSG_USERAUTH_REQUEST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="50"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MSG_USERAUTH_SUCCESS"></a>
+<h3>MSG_USERAUTH_SUCCESS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="52"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="WARNING"></a>
+<h3>WARNING</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="30"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.compress-module.html b/docs/private/paramiko.compress-module.html
new file mode 100644
index 0000000..aa60bc4
--- /dev/null
+++ b/docs/private/paramiko.compress-module.html
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.compress</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;compress
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.compress-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.compress</h2>
+
+Compression implementations for a Transport.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>ZlibCompressor</code></a></b></td>
+ <td>&nbsp;</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>ZlibDecompressor</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.compress.ZlibCompressor-class.html b/docs/private/paramiko.compress.ZlibCompressor-class.html
new file mode 100644
index 0000000..ac848f4
--- /dev/null
+++ b/docs/private/paramiko.compress.ZlibCompressor-class.html
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.compress.ZlibCompressor</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.compress-module.html">Module&nbsp;compress</a> ::
+ Class&nbsp;ZlibCompressor
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.compress.ZlibCompressor-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type ZlibCompressor</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>ZlibCompressor</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__call__"></a><span class="summary-sig"><span class="summary-sig-name">__call__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.compress.ZlibDecompressor-class.html b/docs/private/paramiko.compress.ZlibDecompressor-class.html
new file mode 100644
index 0000000..63e0b1f
--- /dev/null
+++ b/docs/private/paramiko.compress.ZlibDecompressor-class.html
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.compress.ZlibDecompressor</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.compress-module.html">Module&nbsp;compress</a> ::
+ Class&nbsp;ZlibDecompressor
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.compress.ZlibDecompressor-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type ZlibDecompressor</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>ZlibDecompressor</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__call__"></a><span class="summary-sig"><span class="summary-sig-name">__call__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.dsskey-module.html b/docs/private/paramiko.dsskey-module.html
new file mode 100644
index 0000000..370a1c8
--- /dev/null
+++ b/docs/private/paramiko.dsskey-module.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.dsskey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;dsskey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.dsskey-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.dsskey-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.dsskey</h2>
+
+<a href="paramiko.DSSKey-class.html"
+class="link"><code>DSSKey</code></a>
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.file-module.html b/docs/private/paramiko.file-module.html
new file mode 100644
index 0000000..676e3ce
--- /dev/null
+++ b/docs/private/paramiko.file-module.html
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.file</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;file
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.file-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.file-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.file</h2>
+
+BufferedFile.
+<hr/>
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.file-module.html#_FLAG_APPEND"><code>_FLAG_APPEND</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.file-module.html#_FLAG_BINARY"><code>_FLAG_BINARY</code></a></b> = <span title="16">16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.file-module.html#_FLAG_BUFFERED"><code>_FLAG_BUFFERED</code></a></b> = <span title="32">32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.file-module.html#_FLAG_LINE_BUFFERED"><code>_FLAG_LINE_BUFFERED</code></a></b> = <span title="64">64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.file-module.html#_FLAG_READ"><code>_FLAG_READ</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.file-module.html#_FLAG_UNIVERSAL_NEWLINE"><code>_FLAG_UNIVERSAL_NEWLINE</code></a></b> = <span title="128">128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.file-module.html#_FLAG_WRITE"><code>_FLAG_WRITE</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_FLAG_APPEND"></a>
+<h3>_FLAG_APPEND</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_FLAG_BINARY"></a>
+<h3>_FLAG_BINARY</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="16"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_FLAG_BUFFERED"></a>
+<h3>_FLAG_BUFFERED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="32"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_FLAG_LINE_BUFFERED"></a>
+<h3>_FLAG_LINE_BUFFERED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="64"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_FLAG_READ"></a>
+<h3>_FLAG_READ</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_FLAG_UNIVERSAL_NEWLINE"></a>
+<h3>_FLAG_UNIVERSAL_NEWLINE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="128"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_FLAG_WRITE"></a>
+<h3>_FLAG_WRITE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.kex_gex-module.html b/docs/private/paramiko.kex_gex-module.html
new file mode 100644
index 0000000..8fad377
--- /dev/null
+++ b/docs/private/paramiko.kex_gex-module.html
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.kex_gex</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;kex_gex
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.kex_gex-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.kex_gex</h2>
+
+Variant on <a
+href="../private/paramiko.kex_group1.KexGroup1-class.html"
+class="link"><code>KexGroup1</code></a> where the prime &quot;p&quot; and
+generator &quot;g&quot; are provided by the server. A bit more work is
+required on the client side, and a <b>lot</b> more on the server
+side.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.kex_gex.KexGex-class.html"><code>KexGex</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP"><code>_MSG_KEXDH_GEX_GROUP</code></a></b> = <span title="31">31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT"><code>_MSG_KEXDH_GEX_INIT</code></a></b> = <span title="32">32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY"><code>_MSG_KEXDH_GEX_REPLY</code></a></b> = <span title="33">33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST"><code>_MSG_KEXDH_GEX_REQUEST</code></a></b> = <span title="34">34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_MSG_KEXDH_GEX_GROUP"></a>
+<h3>_MSG_KEXDH_GEX_GROUP</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="31"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_MSG_KEXDH_GEX_INIT"></a>
+<h3>_MSG_KEXDH_GEX_INIT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="32"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_MSG_KEXDH_GEX_REPLY"></a>
+<h3>_MSG_KEXDH_GEX_REPLY</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="33"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_MSG_KEXDH_GEX_REQUEST"></a>
+<h3>_MSG_KEXDH_GEX_REQUEST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="34"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.kex_gex.KexGex-class.html b/docs/private/paramiko.kex_gex.KexGex-class.html
new file mode 100644
index 0000000..2eec555
--- /dev/null
+++ b/docs/private/paramiko.kex_gex.KexGex-class.html
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.kex_gex.KexGex</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.kex_gex-module.html">Module&nbsp;kex_gex</a> ::
+ Class&nbsp;KexGex
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.kex_gex.KexGex-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type KexGex</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>KexGex</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>transport</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_generate_x"></a><span class="summary-sig"><span class="summary-sig-name">_generate_x</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_kexdh_gex_group"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_gex_group</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_kexdh_gex_init"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_gex_init</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_kexdh_gex_reply"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_gex_reply</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_kexdh_gex_request"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_gex_request</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="parse_next"></a><span class="summary-sig"><span class="summary-sig-name">parse_next</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>ptype</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="start_kex"></a><span class="summary-sig"><span class="summary-sig-name">start_kex</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_gex.KexGex-class.html#max_bits"><code>max_bits</code></a></b> = <span title="8192">8192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_gex.KexGex-class.html#min_bits"><code>min_bits</code></a></b> = <span title="1024">1024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="../private/paramiko.kex_gex.KexGex-class.html#name"><code>name</code></a></b> = <span title="'diffie-hellman-group-exchange-sha1'"><code><span class="variable-quote">'</span>diffie-hellman-group-exchange-sha1<span class="variable-quote">'</span> </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_gex.KexGex-class.html#preferred_bits"><code>preferred_bits</code></a></b> = <span title="2048">2048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="max_bits"></a>
+<h3>max_bits</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8192"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="min_bits"></a>
+<h3>min_bits</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1024"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="name"></a>
+<h3>name</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'diffie-hellman-group-exchange-sha1'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>diffie-hellman-group-exchange-sha1<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="preferred_bits"></a>
+<h3>preferred_bits</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2048"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.kex_group1-module.html b/docs/private/paramiko.kex_group1-module.html
new file mode 100644
index 0000000..84a44f2
--- /dev/null
+++ b/docs/private/paramiko.kex_group1-module.html
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.kex_group1</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;kex_group1
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.kex_group1-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.kex_group1</h2>
+
+Standard SSH key exchange (&quot;kex&quot; if you wanna sound cool).
+Diffie-Hellman of 1024 bit key halves, using a known &quot;p&quot; prime
+and &quot;g&quot; generator.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>KexGroup1</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_INIT"><code>_MSG_KEXDH_INIT</code></a></b> = <span title="30">30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY"><code>_MSG_KEXDH_REPLY</code></a></b> = <span title="31">31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.kex_group1-module.html#G"><code>G</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>long</code></font></td>
+<td><b><a href="../private/paramiko.kex_group1-module.html#P"><code>P</code></a></b> = <span title="179769313486231590770839156793787453197860296048756011706444423684197180216158519368947833795864925541502180565485980503646440548199239100050792877003355816639229553136239076508735759914822574862575007425302077447712589550957937778424442426617334727629299387668709205606050270810842907692932019128194467627007L"><code>1797693134862315907708391567937874531978602960487560<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_MSG_KEXDH_INIT"></a>
+<h3>_MSG_KEXDH_INIT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="30"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_MSG_KEXDH_REPLY"></a>
+<h3>_MSG_KEXDH_REPLY</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="31"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="G"></a>
+<h3>G</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="P"></a>
+<h3>P</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>long</code>
+
+ </dd>
+<span title="179769313486231590770839156793787453197860296048756011706444423684197180216158519368947833795864925541502180565485980503646440548199239100050792877003355816639229553136239076508735759914822574862575007425302077447712589550957937778424442426617334727629299387668709205606050270810842907692932019128194467627007L"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1797693134862315907708391567937874531978602960487560117064444236841971<span class="variable-linewrap">\</span>
+8021615851936894783379586492554150218056548598050364644054819923910005<span class="variable-linewrap">\</span>
+0792877003355816639229553136239076508735759914822574862575007425302077<span class="variable-linewrap">\</span>
+4477125895509579377784244424266173347276292993876687092056060502708108<span class="variable-linewrap">\</span>
+42907692932019128194467627007L </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.kex_group1.KexGroup1-class.html b/docs/private/paramiko.kex_group1.KexGroup1-class.html
new file mode 100644
index 0000000..7287b9d
--- /dev/null
+++ b/docs/private/paramiko.kex_group1.KexGroup1-class.html
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.kex_group1.KexGroup1</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.kex_group1-module.html">Module&nbsp;kex_group1</a> ::
+ Class&nbsp;KexGroup1
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.kex_group1.KexGroup1-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type KexGroup1</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>KexGroup1</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>transport</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_generate_x"></a><span class="summary-sig"><span class="summary-sig-name">_generate_x</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_kexdh_init"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_init</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_kexdh_reply"></a><span class="summary-sig"><span class="summary-sig-name">_parse_kexdh_reply</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="parse_next"></a><span class="summary-sig"><span class="summary-sig-name">parse_next</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>ptype</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="start_kex"></a><span class="summary-sig"><span class="summary-sig-name">start_kex</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="../private/paramiko.kex_group1.KexGroup1-class.html#name"><code>name</code></a></b> = <span title="'diffie-hellman-group1-sha1'"><code><span class="variable-quote">'</span>diffie-hellman-group1-sha1<span class="variable-quote">'</span> </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="name"></a>
+<h3>name</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'diffie-hellman-group1-sha1'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>diffie-hellman-group1-sha1<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.logging22-module.html b/docs/private/paramiko.logging22-module.html
new file mode 100644
index 0000000..daa72e6
--- /dev/null
+++ b/docs/private/paramiko.logging22-module.html
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.logging22</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;logging22
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.logging22-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.logging22</h2>
+
+Stub out logging on python &lt; 2.3.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.logging22.Formatter-class.html"><code>Formatter</code></a></b></td>
+ <td>&nbsp;</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.logging22.logger-class.html"><code>logger</code></a></b></td>
+ <td>&nbsp;</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.logging22.StreamHandler-class.html"><code>StreamHandler</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Function Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="getLogger"></a><span class="summary-sig"><span class="summary-sig-name">getLogger</span>(<span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>logger</code></font></td>
+<td><b><a href="../private/paramiko.logging22-module.html#_logger"><code>_logger</code></a></b> = <span title="&lt;paramiko.logging22.logger object at 0xb7b2254c&gt;"><code>&lt;paramiko.logging22.logger&nbsp;object&nbsp;at&nbsp;0xb7b2254<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.logging22-module.html#CRITICAL"><code>CRITICAL</code></a></b> = <span title="50">50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.logging22-module.html#DEBUG"><code>DEBUG</code></a></b> = <span title="10">10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.logging22-module.html#ERROR"><code>ERROR</code></a></b> = <span title="40">40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.logging22-module.html#INFO"><code>INFO</code></a></b> = <span title="20">20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.logging22-module.html#WARNING"><code>WARNING</code></a></b> = <span title="30">30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_logger"></a>
+<h3>_logger</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>logger</code>
+
+ </dd>
+<span title="&lt;paramiko.logging22.logger object at 0xb7b2254c&gt;"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+&lt;paramiko.logging22.logger object at 0xb7b2254c&gt; </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CRITICAL"></a>
+<h3>CRITICAL</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="50"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="DEBUG"></a>
+<h3>DEBUG</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="10"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="ERROR"></a>
+<h3>ERROR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="40"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="INFO"></a>
+<h3>INFO</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="20"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="WARNING"></a>
+<h3>WARNING</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="30"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.logging22.Formatter-class.html b/docs/private/paramiko.logging22.Formatter-class.html
new file mode 100644
index 0000000..78fa916
--- /dev/null
+++ b/docs/private/paramiko.logging22.Formatter-class.html
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.logging22.Formatter</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.logging22-module.html">Module&nbsp;logging22</a> ::
+ Class&nbsp;Formatter
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.logging22.Formatter-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Formatter</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>Formatter</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>x</span>,
+ <span class=summary-sig-arg>y</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.logging22.StreamHandler-class.html b/docs/private/paramiko.logging22.StreamHandler-class.html
new file mode 100644
index 0000000..dc3e953
--- /dev/null
+++ b/docs/private/paramiko.logging22.StreamHandler-class.html
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.logging22.StreamHandler</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.logging22-module.html">Module&nbsp;logging22</a> ::
+ Class&nbsp;StreamHandler
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.logging22.StreamHandler-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type StreamHandler</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>StreamHandler</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>f</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="setFormatter"></a><span class="summary-sig"><span class="summary-sig-name">setFormatter</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>f</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.logging22.logger-class.html b/docs/private/paramiko.logging22.logger-class.html
new file mode 100644
index 0000000..75bd6da
--- /dev/null
+++ b/docs/private/paramiko.logging22.logger-class.html
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.logging22.logger</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.logging22-module.html">Module&nbsp;logging22</a> ::
+ Class&nbsp;logger
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.logging22.logger-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type logger</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>logger</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="addFilter"></a><span class="summary-sig"><span class="summary-sig-name">addFilter</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filter</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="addHandler"></a><span class="summary-sig"><span class="summary-sig-name">addHandler</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>h</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="log"></a><span class="summary-sig"><span class="summary-sig-name">log</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>,
+ <span class=summary-sig-arg>text</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="setLevel"></a><span class="summary-sig"><span class="summary-sig-name">setLevel</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>level</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.message-module.html b/docs/private/paramiko.message-module.html
new file mode 100644
index 0000000..3a82218
--- /dev/null
+++ b/docs/private/paramiko.message-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.message</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;message
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.message-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.message-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.message</h2>
+
+Implementation of an SSH2 &quot;message&quot;.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.packet-module.html b/docs/private/paramiko.packet-module.html
new file mode 100644
index 0000000..a14ccd8
--- /dev/null
+++ b/docs/private/paramiko.packet-module.html
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.packet</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;packet
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.packet-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.packet</h2>
+
+Packetizer.
+<hr/>
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Exceptions</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.packet.NeedRekeyException-class.html"><code>NeedRekeyException</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.packet.NeedRekeyException-class.html b/docs/private/paramiko.packet.NeedRekeyException-class.html
new file mode 100644
index 0000000..850f706
--- /dev/null
+++ b/docs/private/paramiko.packet.NeedRekeyException-class.html
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.packet.NeedRekeyException</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.packet-module.html">Module&nbsp;packet</a> ::
+ Class&nbsp;NeedRekeyException
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.packet.NeedRekeyException-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class NeedRekeyException</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <b>NeedRekeyException</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.pipe-module.html b/docs/private/paramiko.pipe-module.html
new file mode 100644
index 0000000..34edd01
--- /dev/null
+++ b/docs/private/paramiko.pipe-module.html
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.pipe</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;pipe
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.pipe-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.pipe</h2>
+
+Abstraction of a one-way pipe where the read end can be used in
+select(). Normally this is trivial, but Windows makes it nearly
+impossible.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.pipe.PosixPipe-class.html"><code>PosixPipe</code></a></b></td>
+ <td>&nbsp;</td></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>WindowsPipe</code></a></b></td>
+ <td>On Windows, only an OS-level &quot;WinSock&quot; may be used in
+select(), but reads and writes must be to the actual socket object.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Function Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="make_pipe"></a><span class="summary-sig"><span class="summary-sig-name">make_pipe</span>()</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.pipe.PosixPipe-class.html b/docs/private/paramiko.pipe.PosixPipe-class.html
new file mode 100644
index 0000000..b8a01b1
--- /dev/null
+++ b/docs/private/paramiko.pipe.PosixPipe-class.html
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.pipe.PosixPipe</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.pipe-module.html">Module&nbsp;pipe</a> ::
+ Class&nbsp;PosixPipe
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.pipe.PosixPipe-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type PosixPipe</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>PosixPipe</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="clear"></a><span class="summary-sig"><span class="summary-sig-name">clear</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="close"></a><span class="summary-sig"><span class="summary-sig-name">close</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="fileno"></a><span class="summary-sig"><span class="summary-sig-name">fileno</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="set"></a><span class="summary-sig"><span class="summary-sig-name">set</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="set_forever"></a><span class="summary-sig"><span class="summary-sig-name">set_forever</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.pipe.WindowsPipe-class.html b/docs/private/paramiko.pipe.WindowsPipe-class.html
new file mode 100644
index 0000000..56bd3f4
--- /dev/null
+++ b/docs/private/paramiko.pipe.WindowsPipe-class.html
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.pipe.WindowsPipe</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.pipe-module.html">Module&nbsp;pipe</a> ::
+ Class&nbsp;WindowsPipe
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.pipe.WindowsPipe-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type WindowsPipe</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>WindowsPipe</b>
+</pre><br />
+
+<hr/>
+
+On Windows, only an OS-level &quot;WinSock&quot; may be used in
+select(), but reads and writes must be to the actual socket object.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="clear"></a><span class="summary-sig"><span class="summary-sig-name">clear</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="close"></a><span class="summary-sig"><span class="summary-sig-name">close</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="fileno"></a><span class="summary-sig"><span class="summary-sig-name">fileno</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="set"></a><span class="summary-sig"><span class="summary-sig-name">set</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="set_forever"></a><span class="summary-sig"><span class="summary-sig-name">set_forever</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.pkey-module.html b/docs/private/paramiko.pkey-module.html
new file mode 100644
index 0000000..3b6a4a1
--- /dev/null
+++ b/docs/private/paramiko.pkey-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.pkey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;pkey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.pkey-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.pkey-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.pkey</h2>
+
+Common API for all public keys.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.primes-module.html b/docs/private/paramiko.primes-module.html
new file mode 100644
index 0000000..3f2df29
--- /dev/null
+++ b/docs/private/paramiko.primes-module.html
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.primes</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;primes
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.primes-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.primes</h2>
+
+Utility functions for dealing with primes.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.primes.ModulusPack-class.html"><code>ModulusPack</code></a></b></td>
+ <td>convenience object for holding the contents of the /etc/ssh/moduli
+file, on systems that have such a file.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Function Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.primes-module.html#_generate_prime" class="summary-sig-name"><code>_generate_prime</code></a>(<span class=summary-sig-arg>bits</span>,
+ <span class=summary-sig-arg>randpool</span>)</span></code>
+<br />
+primtive attempt at prime generation</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.primes-module.html#_roll_random" class="summary-sig-name"><code>_roll_random</code></a>(<span class=summary-sig-arg>rpool</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+<br />
+returns a random # from 0 to N-1</td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Function Details</th></tr>
+</table>
+
+<a name="_generate_prime"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_generate_prime</span>(<span class=sig-arg>bits</span>,
+ <span class=sig-arg>randpool</span>)</span>
+ </h3>
+ primtive attempt at prime generation
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="_roll_random"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_roll_random</span>(<span class=sig-arg>rpool</span>,
+ <span class=sig-arg>n</span>)</span>
+ </h3>
+ returns a random # from 0 to N-1
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.primes.ModulusPack-class.html b/docs/private/paramiko.primes.ModulusPack-class.html
new file mode 100644
index 0000000..438893b
--- /dev/null
+++ b/docs/private/paramiko.primes.ModulusPack-class.html
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.primes.ModulusPack</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.primes-module.html">Module&nbsp;primes</a> ::
+ Class&nbsp;ModulusPack
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.primes.ModulusPack-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type ModulusPack</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>ModulusPack</b>
+</pre><br />
+
+<hr/>
+
+convenience object for holding the contents of the /etc/ssh/moduli
+file, on systems that have such a file.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>rpool</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_parse_modulus"></a><span class="summary-sig"><span class="summary-sig-name">_parse_modulus</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>line</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_modulus"></a><span class="summary-sig"><span class="summary-sig-name">get_modulus</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>min</span>,
+ <span class=summary-sig-arg>prefer</span>,
+ <span class=summary-sig-arg>max</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.primes.ModulusPack-class.html#read_file" class="summary-sig-name"><code>read_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="read_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">read_file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>)</span>
+ </h3>
+ <dl><dt></dt><dd>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ passed from any file operations that fail.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.rsakey-module.html b/docs/private/paramiko.rsakey-module.html
new file mode 100644
index 0000000..29f2397
--- /dev/null
+++ b/docs/private/paramiko.rsakey-module.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.rsakey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;rsakey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.rsakey-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.rsakey-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.rsakey</h2>
+
+<a href="paramiko.RSAKey-class.html"
+class="link"><code>RSAKey</code></a>
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.server-module.html b/docs/private/paramiko.server-module.html
new file mode 100644
index 0000000..95d6786
--- /dev/null
+++ b/docs/private/paramiko.server-module.html
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.server</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;server
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.server-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.server-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.server</h2>
+
+<a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> is an interface to override
+for server support.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a></b></td>
+ <td>A query (set of prompts) for a user during interactive
+authentication.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.server.InteractiveQuery-class.html b/docs/private/paramiko.server.InteractiveQuery-class.html
new file mode 100644
index 0000000..adc7ea2
--- /dev/null
+++ b/docs/private/paramiko.server.InteractiveQuery-class.html
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.server.InteractiveQuery</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="paramiko.server-module.html">Module&nbsp;server</a> ::
+ Class&nbsp;InteractiveQuery
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.server.InteractiveQuery-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.server.InteractiveQuery-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type InteractiveQuery</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>InteractiveQuery</b>
+</pre><br />
+
+<hr/>
+
+A query (set of prompts) for a user during interactive
+authentication.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.server.InteractiveQuery-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>instructions</span>,
+ <span class="summary-sig-vararg">*prompts</span>)</span></code>
+<br />
+Create a new interactive query to send to the client.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.server.InteractiveQuery-class.html#add_prompt" class="summary-sig-name"><code>add_prompt</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>prompt</span>,
+ <span class=summary-sig-arg>echo</span>)</span></code>
+<br />
+Add a prompt to this query.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>=<span class=sig-default>''</span>,
+ <span class=sig-arg>instructions</span>=<span class=sig-default>''</span>,
+ <span class="sig-vararg">*prompts</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new interactive query to send to the client. The name and
+ instructions are optional, but are generally displayed to the end user.
+ A list of prompts may be included, or they may be added via the <a
+ href="paramiko.server.InteractiveQuery-class.html#add_prompt"
+ class="link"><code>add_prompt</code></a> method.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ name of this query
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>instructions</b></code> -
+ user instructions (usually short) about this query
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_prompt"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_prompt</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>prompt</span>,
+ <span class=sig-arg>echo</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ Add a prompt to this query. The prompt should be a (reasonably
+ short) string. Multiple prompts can be added to the same query.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>prompt</b></code> -
+ the user prompt
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>echo</b></code> -
+ <code>True</code> (default) if the user's response should be
+ echoed; <code>False</code> if not (for a password or similar)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.sftp-module.html b/docs/private/paramiko.sftp-module.html
new file mode 100644
index 0000000..2d280dd
--- /dev/null
+++ b/docs/private/paramiko.sftp-module.html
@@ -0,0 +1,1082 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.sftp-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp</h2>
+
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_ATTRS"><code>CMD_ATTRS</code></a></b> = <span title="105">105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_CLOSE"><code>CMD_CLOSE</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_DATA"><code>CMD_DATA</code></a></b> = <span title="103">103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_EXTENDED"><code>CMD_EXTENDED</code></a></b> = <span title="200">200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY"><code>CMD_EXTENDED_REPLY</code></a></b> = <span title="201">201&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_FSETSTAT"><code>CMD_FSETSTAT</code></a></b> = <span title="10">10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_FSTAT"><code>CMD_FSTAT</code></a></b> = <span title="8">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_HANDLE"><code>CMD_HANDLE</code></a></b> = <span title="102">102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_INIT"><code>CMD_INIT</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_LSTAT"><code>CMD_LSTAT</code></a></b> = <span title="7">7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_MKDIR"><code>CMD_MKDIR</code></a></b> = <span title="14">14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_NAME"><code>CMD_NAME</code></a></b> = <span title="104">104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_NAMES"><code>CMD_NAMES</code></a></b> = <span title="{1: 'init', 2: 'version', 3: 'open', 4: 'close', 5: 'read', 6: 'write', 7: 'lstat', 8: 'fstat', 9: 'setstat', 10: 'fsetstat', 11: 'opendir', 12: 'readdir', 13: 'remove', 14: 'mkdir', 15: 'rmdir', 16: 'realpath', 17: 'stat', 18: 'rename', 19: 'readlink', 20: 'symlink', 200: 'extended', 201: 'extended_reply', 101: 'status', 102: 'handle', 103: 'data', 104: 'name', 105: 'attrs'}"><code>{1:&nbsp;'init',&nbsp;2:&nbsp;'version',&nbsp;3:&nbsp;'open',&nbsp;4:&nbsp;'clo<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_OPEN"><code>CMD_OPEN</code></a></b> = <span title="3">3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_OPENDIR"><code>CMD_OPENDIR</code></a></b> = <span title="11">11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_READ"><code>CMD_READ</code></a></b> = <span title="5">5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_READDIR"><code>CMD_READDIR</code></a></b> = <span title="12">12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_READLINK"><code>CMD_READLINK</code></a></b> = <span title="19">19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_REALPATH"><code>CMD_REALPATH</code></a></b> = <span title="16">16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_REMOVE"><code>CMD_REMOVE</code></a></b> = <span title="13">13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_RENAME"><code>CMD_RENAME</code></a></b> = <span title="18">18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_RMDIR"><code>CMD_RMDIR</code></a></b> = <span title="15">15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_SETSTAT"><code>CMD_SETSTAT</code></a></b> = <span title="9">9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_STAT"><code>CMD_STAT</code></a></b> = <span title="17">17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_STATUS"><code>CMD_STATUS</code></a></b> = <span title="101">101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_SYMLINK"><code>CMD_SYMLINK</code></a></b> = <span title="20">20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_VERSION"><code>CMD_VERSION</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_WRITE"><code>CMD_WRITE</code></a></b> = <span title="6">6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE"><code>SFTP_BAD_MESSAGE</code></a></b> = <span title="5">5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST"><code>SFTP_CONNECTION_LOST</code></a></b> = <span title="7">7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_DESC"><code>SFTP_DESC</code></a></b> = <span title="['Success', 'End of file', 'No such file', 'Permission denied', 'Failure', 'Bad message', 'No connection', 'Connection lost', 'Operation unsupported']"><code>['Success',&nbsp;'End&nbsp;of&nbsp;file',&nbsp;'No&nbsp;such&nbsp;file',&nbsp;'<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_EOF"><code>SFTP_EOF</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FAILURE"><code>SFTP_FAILURE</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_APPEND"><code>SFTP_FLAG_APPEND</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_CREATE"><code>SFTP_FLAG_CREATE</code></a></b> = <span title="8">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_EXCL"><code>SFTP_FLAG_EXCL</code></a></b> = <span title="32">32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_READ"><code>SFTP_FLAG_READ</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC"><code>SFTP_FLAG_TRUNC</code></a></b> = <span title="16">16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE"><code>SFTP_FLAG_WRITE</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION"><code>SFTP_NO_CONNECTION</code></a></b> = <span title="6">6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE"><code>SFTP_NO_SUCH_FILE</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_OK"><code>SFTP_OK</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED"><code>SFTP_OP_UNSUPPORTED</code></a></b> = <span title="8">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED"><code>SFTP_PERMISSION_DENIED</code></a></b> = <span title="3">3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.sftp-module.html#_VERSION"><code>_VERSION</code></a></b> = <span title="3">3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_ATTRS"></a>
+<h3>CMD_ATTRS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="105"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_CLOSE"></a>
+<h3>CMD_CLOSE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_DATA"></a>
+<h3>CMD_DATA</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="103"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_EXTENDED"></a>
+<h3>CMD_EXTENDED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="200"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_EXTENDED_REPLY"></a>
+<h3>CMD_EXTENDED_REPLY</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="201"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+201&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_FSETSTAT"></a>
+<h3>CMD_FSETSTAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="10"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_FSTAT"></a>
+<h3>CMD_FSTAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_HANDLE"></a>
+<h3>CMD_HANDLE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="102"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_INIT"></a>
+<h3>CMD_INIT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_LSTAT"></a>
+<h3>CMD_LSTAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="7"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_MKDIR"></a>
+<h3>CMD_MKDIR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="14"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_NAME"></a>
+<h3>CMD_NAME</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="104"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_NAMES"></a>
+<h3>CMD_NAMES</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{1: 'init', 2: 'version', 3: 'open', 4: 'close', 5: 'read', 6: 'write', 7: 'lstat', 8: 'fstat', 9: 'setstat', 10: 'fsetstat', 11: 'opendir', 12: 'readdir', 13: 'remove', 14: 'mkdir', 15: 'rmdir', 16: 'realpath', 17: 'stat', 18: 'rename', 19: 'readlink', 20: 'symlink', 200: 'extended', 201: 'extended_reply', 101: 'status', 102: 'handle', 103: 'data', 104: 'name', 105: 'attrs'}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{1: 'init',
+ 2: 'version',
+ 3: 'open',
+ 4: 'close',
+ 5: 'read',
+ 6: 'write',
+ 7: 'lstat',
+ 8: 'fstat',
+<span class="variable-ellipsis">...</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_OPEN"></a>
+<h3>CMD_OPEN</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="3"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_OPENDIR"></a>
+<h3>CMD_OPENDIR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="11"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_READ"></a>
+<h3>CMD_READ</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="5"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_READDIR"></a>
+<h3>CMD_READDIR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="12"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_READLINK"></a>
+<h3>CMD_READLINK</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="19"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_REALPATH"></a>
+<h3>CMD_REALPATH</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="16"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_REMOVE"></a>
+<h3>CMD_REMOVE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="13"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_RENAME"></a>
+<h3>CMD_RENAME</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="18"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_RMDIR"></a>
+<h3>CMD_RMDIR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="15"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_SETSTAT"></a>
+<h3>CMD_SETSTAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="9"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_STAT"></a>
+<h3>CMD_STAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="17"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_STATUS"></a>
+<h3>CMD_STATUS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="101"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_SYMLINK"></a>
+<h3>CMD_SYMLINK</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="20"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_VERSION"></a>
+<h3>CMD_VERSION</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_WRITE"></a>
+<h3>CMD_WRITE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="6"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_BAD_MESSAGE"></a>
+<h3>SFTP_BAD_MESSAGE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="5"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_CONNECTION_LOST"></a>
+<h3>SFTP_CONNECTION_LOST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="7"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_DESC"></a>
+<h3>SFTP_DESC</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>list</code>
+
+ </dd>
+<span title="['Success', 'End of file', 'No such file', 'Permission denied', 'Failure', 'Bad message', 'No connection', 'Connection lost', 'Operation unsupported']"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+['Success',
+ 'End of file',
+ 'No such file',
+ 'Permission denied',
+ 'Failure',
+ 'Bad message',
+ 'No connection',
+ 'Connection lost',
+<span class="variable-ellipsis">...</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_EOF"></a>
+<h3>SFTP_EOF</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FAILURE"></a>
+<h3>SFTP_FAILURE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_APPEND"></a>
+<h3>SFTP_FLAG_APPEND</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_CREATE"></a>
+<h3>SFTP_FLAG_CREATE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_EXCL"></a>
+<h3>SFTP_FLAG_EXCL</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="32"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_READ"></a>
+<h3>SFTP_FLAG_READ</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_TRUNC"></a>
+<h3>SFTP_FLAG_TRUNC</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="16"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_WRITE"></a>
+<h3>SFTP_FLAG_WRITE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_NO_CONNECTION"></a>
+<h3>SFTP_NO_CONNECTION</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="6"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_NO_SUCH_FILE"></a>
+<h3>SFTP_NO_SUCH_FILE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_OK"></a>
+<h3>SFTP_OK</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="0"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_OP_UNSUPPORTED"></a>
+<h3>SFTP_OP_UNSUPPORTED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_PERMISSION_DENIED"></a>
+<h3>SFTP_PERMISSION_DENIED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="3"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_VERSION"></a>
+<h3>_VERSION</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="3"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.sftp_attr-module.html b/docs/private/paramiko.sftp_attr-module.html
new file mode 100644
index 0000000..f5e9f9c
--- /dev/null
+++ b/docs/private/paramiko.sftp_attr-module.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_attr</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_attr
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.sftp_attr-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_attr-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_attr</h2>
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.sftp_client-module.html b/docs/private/paramiko.sftp_client-module.html
new file mode 100644
index 0000000..9eff026
--- /dev/null
+++ b/docs/private/paramiko.sftp_client-module.html
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_client</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_client
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.sftp_client-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_client-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_client</h2>
+
+Client-mode SFTP support.
+<hr/>
+
+<!-- =========== START OF FUNCTION SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Function Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/paramiko.sftp_client-module.html#_to_unicode" class="summary-sig-name"><code>_to_unicode</code></a>(<span class=summary-sig-arg>s</span>)</span></code>
+<br />
+if a str is not ascii, decode its utf8 into unicode</td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Function Details</th></tr>
+</table>
+
+<a name="_to_unicode"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">_to_unicode</span>(<span class=sig-arg>s</span>)</span>
+ </h3>
+ if a str is not ascii, decode its utf8 into unicode
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.sftp_file-module.html b/docs/private/paramiko.sftp_file-module.html
new file mode 100644
index 0000000..f954ea3
--- /dev/null
+++ b/docs/private/paramiko.sftp_file-module.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_file</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_file
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.sftp_file-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_file-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_file</h2>
+
+<a href="paramiko.SFTPFile-class.html"
+class="link"><code>SFTPFile</code></a>
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.sftp_handle-module.html b/docs/private/paramiko.sftp_handle-module.html
new file mode 100644
index 0000000..aba785c
--- /dev/null
+++ b/docs/private/paramiko.sftp_handle-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_handle</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_handle
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.sftp_handle-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_handle-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_handle</h2>
+
+Abstraction of an SFTP file handle (for server mode).
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.sftp_server-module.html b/docs/private/paramiko.sftp_server-module.html
new file mode 100644
index 0000000..a4c43f5
--- /dev/null
+++ b/docs/private/paramiko.sftp_server-module.html
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_server</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_server
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.sftp_server-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_server-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_server</h2>
+
+Server-mode SFTP support.
+<hr/>
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.sftp_server-module.html#_hash_class"><code>_hash_class</code></a></b> = <span title="{'sha1': &lt;module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'&gt;, 'md5': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'&gt;}"><code>{'sha1':&nbsp;&lt;module&nbsp;'Crypto.Hash.SHA'&nbsp;from&nbsp;'/<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_hash_class"></a>
+<h3>_hash_class</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{'sha1': &lt;module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packages/Crypto/Hash/SHA.pyc'&gt;, 'md5': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packages/Crypto/Hash/MD5.pyc'&gt;}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{'md5': &lt;module 'Crypto.Hash.MD5' from '/usr/lib/python2.4/site-packag<span class="variable-linewrap">\</span>
+es/Crypto/Hash/MD5.pyc'&gt;,
+ 'sha1': &lt;module 'Crypto.Hash.SHA' from '/usr/lib/python2.4/site-packa<span class="variable-linewrap">\</span>
+ges/Crypto/Hash/SHA.pyc'&gt;} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.sftp_si-module.html b/docs/private/paramiko.sftp_si-module.html
new file mode 100644
index 0000000..c4e623f
--- /dev/null
+++ b/docs/private/paramiko.sftp_si-module.html
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_si</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_si
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.sftp_si-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_si-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_si</h2>
+
+<a href="../private/paramiko.SFTPServerInterface-class.html"
+class="link"><code>SFTPServerInterface</code></a> is an interface to
+override for SFTP server support.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.ssh_exception-module.html b/docs/private/paramiko.ssh_exception-module.html
new file mode 100644
index 0000000..dd9908c
--- /dev/null
+++ b/docs/private/paramiko.ssh_exception-module.html
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ssh_exception</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;ssh_exception
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.ssh_exception-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.ssh_exception</h2>
+
+Exceptions defined by paramiko.
+<hr/>
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Exceptions</th></tr>
+<tr><td width="15%">
+ <b><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>PartialAuthentication</code></a></b></td>
+ <td>An internal exception thrown in the case of partial
+authentication.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.ssh_exception.PartialAuthentication-class.html b/docs/private/paramiko.ssh_exception.PartialAuthentication-class.html
new file mode 100644
index 0000000..0aa4a93
--- /dev/null
+++ b/docs/private/paramiko.ssh_exception.PartialAuthentication-class.html
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ssh_exception.PartialAuthentication</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="../private/paramiko.ssh_exception-module.html">Module&nbsp;ssh_exception</a> ::
+ Class&nbsp;PartialAuthentication
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class PartialAuthentication</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+
+ |
+ <b>PartialAuthentication</b>
+</pre><br />
+
+<hr/>
+
+An internal exception thrown in the case of partial
+authentication.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>types</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
+<td><b><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html#allowed_types"><code>allowed_types</code></a></b> = <span title="[]"><code>[] </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="allowed_types"></a>
+<h3>allowed_types</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>list</code>
+
+ </dd>
+<span title="[]"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+[] </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.transport-module.html b/docs/private/paramiko.transport-module.html
new file mode 100644
index 0000000..1d52647
--- /dev/null
+++ b/docs/private/paramiko.transport-module.html
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.transport</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;transport
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.transport-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.transport-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.transport</h2>
+
+<a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> handles the core SSH2
+protocol.
+<hr/>
+
+<!-- =========== START OF FUNCTION SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Function Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_join_lingering_threads"></a><span class="summary-sig"><span class="summary-sig-name">_join_lingering_threads</span>()</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
+<td><b><a href="../private/paramiko.transport-module.html#_active_threads"><code>_active_threads</code></a></b> = <span title="[]"><code>[] </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_active_threads"></a>
+<h3>_active_threads</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>list</code>
+
+ </dd>
+<span title="[]"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+[] </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.util-module.html b/docs/private/paramiko.util-module.html
new file mode 100644
index 0000000..660bdf3
--- /dev/null
+++ b/docs/private/paramiko.util-module.html
@@ -0,0 +1,475 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.util</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;util
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.util-module.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.util-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.util</h2>
+
+Useful functions used by the rest of paramiko.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Function Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="bit_length"></a><span class="summary-sig"><span class="summary-sig-name">bit_length</span>(<span class=summary-sig-arg>n</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#deflate_long" class="summary-sig-name"><code>deflate_long</code></a>(<span class=summary-sig-arg>n</span>,
+ <span class=summary-sig-arg>add_sign_padding</span>)</span></code>
+<br />
+turns a long-int into a normalized byte string (adapted from
+Crypto.Util.number)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="format_binary"></a><span class="summary-sig"><span class="summary-sig-name">format_binary</span>(<span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>prefix</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="format_binary_line"></a><span class="summary-sig"><span class="summary-sig-name">format_binary_line</span>(<span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="format_binary_weird"></a><span class="summary-sig"><span class="summary-sig-name">format_binary_weird</span>(<span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#generate_key_bytes" class="summary-sig-name"><code>generate_key_bytes</code></a>(<span class=summary-sig-arg>hashclass</span>,
+ <span class=summary-sig-arg>salt</span>,
+ <span class=summary-sig-arg>key</span>,
+ <span class=summary-sig-arg>nbytes</span>)</span></code>
+<br />
+Given a password, passphrase, or other human-source key, scramble it
+through a secure hash into some keyworthy bytes.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_logger"></a><span class="summary-sig"><span class="summary-sig-name">get_logger</span>(<span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_thread_id"></a><span class="summary-sig"><span class="summary-sig-name">get_thread_id</span>()</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#hexify" class="summary-sig-name"><code>hexify</code></a>(<span class=summary-sig-arg>s</span>)</span></code>
+<br />
+turn a string into a hex sequence</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#inflate_long" class="summary-sig-name"><code>inflate_long</code></a>(<span class=summary-sig-arg>s</span>,
+ <span class=summary-sig-arg>always_positive</span>)</span></code>
+<br />
+turns a normalized byte string into a long-int (adapted from
+Crypto.Util.number)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> dict(hostname, dict(keytype, <a
+ href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>))
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#load_host_keys" class="summary-sig-name"><code>load_host_keys</code></a>(<span class=summary-sig-arg>filename</span>)</span></code>
+<br />
+Read a file of known SSH host keys, in the format used by openssh, and
+return a compound dict of <code>hostname -&gt; keytype -&gt;</code> <a
+href="../private/paramiko.PKey-class.html"
+class="link"><code>PKey</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#log_to_file" class="summary-sig-name"><code>log_to_file</code></a>(<span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>level</span>)</span></code>
+<br />
+send paramiko logs to a logfile, if they're not already going
+somewhere</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#lookup_ssh_host_config" class="summary-sig-name"><code>lookup_ssh_host_config</code></a>(<span class=summary-sig-arg>hostname</span>,
+ <span class=summary-sig-arg>config</span>)</span></code>
+<br />
+Return a dict of config options for a given hostname.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="mod_inverse"></a><span class="summary-sig"><span class="summary-sig-name">mod_inverse</span>(<span class=summary-sig-arg>x</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> object
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#parse_ssh_config" class="summary-sig-name"><code>parse_ssh_config</code></a>(<span class=summary-sig-arg>file_obj</span>)</span></code>
+<br />
+Parse a config file of the format used by OpenSSH, and return an
+object that can be used to make queries to <a
+href="paramiko.util-module.html#lookup_ssh_host_config"
+class="link"><code>lookup_ssh_host_config</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="safe_string"></a><span class="summary-sig"><span class="summary-sig-name">safe_string</span>(<span class=summary-sig-arg>s</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="tb_strings"></a><span class="summary-sig"><span class="summary-sig-name">tb_strings</span>()</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#unhexify" class="summary-sig-name"><code>unhexify</code></a>(<span class=summary-sig-arg>s</span>)</span></code>
+<br />
+turn a hex sequence back into a string</td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="../private/paramiko.util-module.html#_g_thread_counter"><code>_g_thread_counter</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="../private/paramiko.util-module.html#_g_thread_ids"><code>_g_thread_ids</code></a></b> = <span title="{}"><code>{} </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>lock</code></font></td>
+<td><b><a href="../private/paramiko.util-module.html#_g_thread_lock"><code>_g_thread_lock</code></a></b> = <span title="&lt;thread.lock object at 0xb7df2180&gt;"><code>&lt;thread.lock&nbsp;object&nbsp;at&nbsp;0xb7df2180&gt; </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>PFilter</code></font></td>
+<td><b><a href="../private/paramiko.util-module.html#_pfilter"><code>_pfilter</code></a></b> = <span title="&lt;paramiko.util.PFilter object at 0xb7b39dac&gt;"><code>&lt;paramiko.util.PFilter&nbsp;object&nbsp;at&nbsp;0xb7b39dac&gt; </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Function Details</th></tr>
+</table>
+
+<a name="deflate_long"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">deflate_long</span>(<span class=sig-arg>n</span>,
+ <span class=sig-arg>add_sign_padding</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ turns a long-int into a normalized byte string (adapted from
+ Crypto.Util.number)
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="generate_key_bytes"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">generate_key_bytes</span>(<span class=sig-arg>hashclass</span>,
+ <span class=sig-arg>salt</span>,
+ <span class=sig-arg>key</span>,
+ <span class=sig-arg>nbytes</span>)</span>
+ </h3>
+ Given a password, passphrase, or other human-source key, scramble it
+ through a secure hash into some keyworthy bytes. This specific
+ algorithm is used for encrypting/decrypting private key files.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hashclass</b></code> -
+ class from <code>Crypto.Hash</code> that can be used as a
+ secure hashing function (like <code>MD5</code> or
+ <code>SHA</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<code>Crypto.Hash</code>)</i>
+ <dd><code><b>salt</b></code> -
+ data to salt the hash with.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>key</b></code> -
+ human-entered password or passphrase.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>nbytes</b></code> -
+ number of bytes to generate.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ key data
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="hexify"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">hexify</span>(<span class=sig-arg>s</span>)</span>
+ </h3>
+ turn a string into a hex sequence
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="inflate_long"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">inflate_long</span>(<span class=sig-arg>s</span>,
+ <span class=sig-arg>always_positive</span>=<span class=sig-default>False</span>)</span>
+ </h3>
+ turns a normalized byte string into a long-int (adapted from
+ Crypto.Util.number)
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="load_host_keys"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">load_host_keys</span>(<span class=sig-arg>filename</span>)</span>
+ </h3>
+ <p>Read a file of known SSH host keys, in the format used by openssh,
+ and return a compound dict of <code>hostname -&gt; keytype -&gt;</code>
+ <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>. The hostname may be an IP address
+ or DNS name. The keytype will be either
+ <code>&quot;ssh-rsa&quot;</code> or
+ <code>&quot;ssh-dss&quot;</code>.</p>
+ This type of file unfortunately doesn't exist on Windows, but on
+ posix, it will usually be stored in
+ <code>os.path.expanduser(&quot;~/.ssh/known_hosts&quot;)</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to read host keys from
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ dict of host keys, indexed by hostname and then keytype
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=dict(hostname, dict(keytype, <a
+ href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)))</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="log_to_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">log_to_file</span>(<span class=sig-arg>filename</span>,
+ <span class=sig-arg>level</span>=<span class=sig-default>10</span>)</span>
+ </h3>
+ send paramiko logs to a logfile, if they're not already going
+ somewhere
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="lookup_ssh_host_config"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">lookup_ssh_host_config</span>(<span class=sig-arg>hostname</span>,
+ <span class=sig-arg>config</span>)</span>
+ </h3>
+ <p>Return a dict of config options for a given hostname. The
+ <code>config</code> object must come from <a
+ href="paramiko.util-module.html#parse_ssh_config"
+ class="link"><code>parse_ssh_config</code></a>.</p>
+ <p>The host-matching rules of OpenSSH's <code>ssh_config</code> man
+ page are used, which means that all configuration options from matching
+ host specifications are merged, with more specific hostmasks taking
+ precedence. In other words, if <code>&quot;Port&quot;</code> is set
+ under <code>&quot;Host *&quot;</code> and also <code>&quot;Host
+ *.example.com&quot;</code>, and the lookup is for
+ <code>&quot;ssh.example.com&quot;</code>, then the port entry for
+ <code>&quot;Host *.example.com&quot;</code> will win out.</p>
+ The keys in the returned dict are all normalized to lowercase (look
+ for <code>&quot;port&quot;</code>, not <code>&quot;Port&quot;</code>.
+ No other processing is done to the keys or values.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hostname</b></code> -
+ the hostname to lookup
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>config</b></code> -
+ the config object to search
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=object)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="parse_ssh_config"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">parse_ssh_config</span>(<span class=sig-arg>file_obj</span>)</span>
+ </h3>
+ <p>Parse a config file of the format used by OpenSSH, and return an
+ object that can be used to make queries to <a
+ href="paramiko.util-module.html#lookup_ssh_host_config"
+ class="link"><code>lookup_ssh_host_config</code></a>. The format is
+ described in OpenSSH's <code>ssh_config</code> man page. This method is
+ provided primarily as a convenience to posix users (since the OpenSSH
+ format is a de-facto standard on posix) but should work fine on Windows
+ too.</p>
+ The return value is currently a list of dictionaries, each
+ containing host-specific configuration, but this is considered an
+ implementation detail and may be subject to change in later
+ versions.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>file_obj</b></code> -
+ a file-like object to read the config file from
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=file)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ opaque configuration object
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=object)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="unhexify"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">unhexify</span>(<span class=sig-arg>s</span>)</span>
+ </h3>
+ turn a hex sequence back into a string
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_g_thread_counter"></a>
+<h3>_g_thread_counter</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="0"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_g_thread_ids"></a>
+<h3>_g_thread_ids</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{} </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_g_thread_lock"></a>
+<h3>_g_thread_lock</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>lock</code>
+
+ </dd>
+<span title="&lt;thread.lock object at 0xb7df2180&gt;"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+&lt;thread.lock object at 0xb7df2180&gt; </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_pfilter"></a>
+<h3>_pfilter</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>PFilter</code>
+
+ </dd>
+<span title="&lt;paramiko.util.PFilter object at 0xb7b39dac&gt;"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+&lt;paramiko.util.PFilter object at 0xb7b39dac&gt; </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/paramiko.util.PFilter-class.html b/docs/private/paramiko.util.PFilter-class.html
new file mode 100644
index 0000000..dee3883
--- /dev/null
+++ b/docs/private/paramiko.util.PFilter-class.html
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.util.PFilter</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="paramiko.util-module.html">Module&nbsp;util</a> ::
+ Class&nbsp;PFilter
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/paramiko.util.PFilter-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.util.PFilter-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type PFilter</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>PFilter</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="filter"></a><span class="summary-sig"><span class="summary-sig-name">filter</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>record</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__init__(...) initializes x; see x.__class__.__doc__ for
+signature</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/threading.Thread-class.html b/docs/private/threading.Thread-class.html
new file mode 100644
index 0000000..292b074
--- /dev/null
+++ b/docs/private/threading.Thread-class.html
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>threading.Thread</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;threading ::
+ Class&nbsp;Thread
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/threading.Thread-class.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="threading.Thread-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Thread</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+
+ |
+ <b>Thread</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a>,
+ <a href="paramiko.Transport-class.html"><code>Transport</code></a></dd></dl>
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>group</span>,
+ <span class=summary-sig-arg>target</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>args</span>,
+ <span class=summary-sig-arg>kwargs</span>,
+ <span class=summary-sig-arg>verbose</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">(type, value, traceback)</font></td>
+ <td><code><span class="summary-sig"><code>__exc_info</code>()</span></code>
+<br />
+Return information about the most recent exception caught by an except
+clause in the current stack frame or in an older stack frame.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="getName"></a><span class="summary-sig"><span class="summary-sig-name">getName</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="isAlive"></a><span class="summary-sig"><span class="summary-sig-name">isAlive</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="isDaemon"></a><span class="summary-sig"><span class="summary-sig-name">isDaemon</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="join"></a><span class="summary-sig"><span class="summary-sig-name">join</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="run"></a><span class="summary-sig"><span class="summary-sig-name">run</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="setDaemon"></a><span class="summary-sig"><span class="summary-sig-name">setDaemon</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>daemonic</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="setName"></a><span class="summary-sig"><span class="summary-sig-name">setName</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="start"></a><span class="summary-sig"><span class="summary-sig-name">start</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__bootstrap"></a><span class="summary-sig"><span class="summary-sig-name">__bootstrap</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/threading.Thread-class.html#__delete" class="summary-sig-name"><code>__delete</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Remove current thread from the dict of currently running threads.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__stop"></a><span class="summary-sig"><span class="summary-sig-name">__stop</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_set_daemon"></a><span class="summary-sig"><span class="summary-sig-name">_set_daemon</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from _Verbose</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="../private/threading._Verbose-class.html#_note" class="summary-sig-name"><code>_note</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>format</span>,
+ <span class="summary-sig-vararg">*args</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>bool</code></font></td>
+<td><b><a href="../private/threading.Thread-class.html#__initialized"><code>_Thread__initialized</code></a></b> = <span title="False"><code>False </code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__delete"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__delete</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Remove current thread from the dict of currently running
+ threads.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="_Thread__initialized"></a>
+<h3>_Thread__initialized</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>bool</code>
+
+ </dd>
+<span title="False"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+False </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/threading._Verbose-class.html b/docs/private/threading._Verbose-class.html
new file mode 100644
index 0000000..dec73e3
--- /dev/null
+++ b/docs/private/threading._Verbose-class.html
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>threading._Verbose</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;threading ::
+ Class&nbsp;_Verbose
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="../private/threading._Verbose-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type _Verbose</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>_Verbose</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="threading.Thread-class.html"><code>Thread</code></a></dd></dl>
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>verbose</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="_note"></a><span class="summary-sig"><span class="summary-sig-name">_note</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>format</span>,
+ <span class="summary-sig-vararg">*args</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/private/toc-everything.html b/docs/private/toc-everything.html
new file mode 100644
index 0000000..a232317
--- /dev/null
+++ b/docs/private/toc-everything.html
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Everything</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b>Everything</b></font></center>
+<hr>
+
+<!-- =========== START OF ALL CLASSES =========== -->
+<font size="+1"><b>All&nbsp;Classes</b></font><br />
+<a target="mainFrame" href="paramiko.Agent-class.html">paramiko.Agent</a><br />
+<a target="mainFrame" href="paramiko.AgentKey-class.html">paramiko.AgentKey</a><br />
+<a target="mainFrame" href="../private/paramiko.AuthHandler-class.html">paramiko.AuthHandler</a><br />
+<a target="mainFrame" href="../private/paramiko.BaseSFTP-class.html">paramiko.BaseSFTP</a><br />
+<a target="mainFrame" href="../private/paramiko.ber.BER-class.html">paramiko.ber.BER</a><br />
+<a target="mainFrame" href="paramiko.BufferedFile-class.html">paramiko.BufferedFile</a><br />
+<a target="mainFrame" href="paramiko.Channel-class.html">paramiko.Channel</a><br />
+<a target="mainFrame" href="../private/paramiko.channel.ChannelStderrFile-class.html">paramiko.channel.ChannelStderrFile</a><br />
+<a target="mainFrame" href="../private/paramiko.ChannelFile-class.html">paramiko.ChannelFile</a><br />
+<a target="mainFrame" href="../private/paramiko.compress.ZlibCompressor-class.html">paramiko.compress.ZlibCompressor</a><br />
+<a target="mainFrame" href="../private/paramiko.compress.ZlibDecompressor-class.html">paramiko.compress.ZlibDecompressor</a><br />
+<a target="mainFrame" href="paramiko.DSSKey-class.html">paramiko.DSSKey</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex.KexGex-class.html">paramiko.kex_gex.KexGex</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1.KexGroup1-class.html">paramiko.kex_group1.KexGroup1</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22.Formatter-class.html">paramiko.logging22.Formatter</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22.logger-class.html">paramiko.logging22.logger</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22.StreamHandler-class.html">paramiko.logging22.StreamHandler</a><br />
+<a target="mainFrame" href="paramiko.Message-class.html">paramiko.Message</a><br />
+<a target="mainFrame" href="../private/paramiko.Packetizer-class.html">paramiko.Packetizer</a><br />
+<a target="mainFrame" href="../private/paramiko.pipe.PosixPipe-class.html">paramiko.pipe.PosixPipe</a><br />
+<a target="mainFrame" href="../private/paramiko.pipe.WindowsPipe-class.html">paramiko.pipe.WindowsPipe</a><br />
+<a target="mainFrame" href="../private/paramiko.PKey-class.html">paramiko.PKey</a><br />
+<a target="mainFrame" href="../private/paramiko.primes.ModulusPack-class.html">paramiko.primes.ModulusPack</a><br />
+<a target="mainFrame" href="paramiko.RSAKey-class.html">paramiko.RSAKey</a><br />
+<a target="mainFrame" href="paramiko.SecurityOptions-class.html">paramiko.SecurityOptions</a><br />
+<a target="mainFrame" href="paramiko.server.InteractiveQuery-class.html">paramiko.server.InteractiveQuery</a><br />
+<a target="mainFrame" href="../private/paramiko.ServerInterface-class.html">paramiko.ServerInterface</a><br />
+<a target="mainFrame" href="paramiko.SFTP-class.html">paramiko.SFTP</a><br />
+<a target="mainFrame" href="paramiko.SFTPAttributes-class.html">paramiko.SFTPAttributes</a><br />
+<a target="mainFrame" href="paramiko.SFTPClient-class.html">paramiko.SFTPClient</a><br />
+<a target="mainFrame" href="paramiko.SFTPFile-class.html">paramiko.SFTPFile</a><br />
+<a target="mainFrame" href="paramiko.SFTPHandle-class.html">paramiko.SFTPHandle</a><br />
+<a target="mainFrame" href="paramiko.SFTPServer-class.html">paramiko.SFTPServer</a><br />
+<a target="mainFrame" href="../private/paramiko.SFTPServerInterface-class.html">paramiko.SFTPServerInterface</a><br />
+<a target="mainFrame" href="paramiko.SubsystemHandler-class.html">paramiko.SubsystemHandler</a><br />
+<a target="mainFrame" href="paramiko.Transport-class.html">paramiko.Transport</a><br />
+<a target="mainFrame" href="paramiko.util.PFilter-class.html">paramiko.util.PFilter</a><br />
+<br />
+
+<!-- =========== START OF ALL EXCEPTIONS =========== -->
+<font size="+1"><b>All&nbsp;Exceptions</b></font><br />
+<a target="mainFrame" href="paramiko.BadAuthenticationType-class.html">paramiko.BadAuthenticationType</a><br />
+<a target="mainFrame" href="../private/paramiko.ber.BERException-class.html">paramiko.ber.BERException</a><br />
+<a target="mainFrame" href="../private/paramiko.packet.NeedRekeyException-class.html">paramiko.packet.NeedRekeyException</a><br />
+<a target="mainFrame" href="paramiko.PasswordRequiredException-class.html">paramiko.PasswordRequiredException</a><br />
+<a target="mainFrame" href="paramiko.SFTPError-class.html">paramiko.SFTPError</a><br />
+<a target="mainFrame" href="../private/paramiko.ssh_exception.PartialAuthentication-class.html">paramiko.ssh_exception.PartialAuthentication</a><br />
+<a target="mainFrame" href="paramiko.SSHException-class.html">paramiko.SSHException</a><br />
+<br />
+
+<!-- =========== START OF ALL FUNCTIONS =========== -->
+<font size="+1"><b>All&nbsp;Functions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.primes-module.html#_generate_prime">_generate_prime</a><br />
+<a target="mainFrame" href="../private/paramiko.transport-module.html#_join_lingering_threads">_join_lingering_threads</a><br />
+<a target="mainFrame" href="../private/paramiko.primes-module.html#_roll_random">_roll_random</a><br />
+<a target="mainFrame" href="../private/paramiko.sftp_client-module.html#_to_unicode">_to_unicode</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#bit_length">bit_length</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#deflate_long">deflate_long</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary">format_binary</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#get_logger">get_logger</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#getLogger">getLogger</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#hexify">hexify</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#inflate_long">inflate_long</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#log_to_file">log_to_file</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><br />
+<a target="mainFrame" href="../private/paramiko.pipe-module.html#make_pipe">make_pipe</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#safe_string">safe_string</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#tb_strings">tb_strings</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#unhexify">unhexify</a><br />
+<br />
+
+<!-- =========== START OF ALL VARIABLES =========== -->
+<font size="+1"><b>All&nbsp;Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__author__">__author__</a><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__date__">__date__</a><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__license__">__license__</a><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__version__">__version__</a><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__version_info__">__version_info__</a><br />
+<a target="mainFrame" href="../private/paramiko.transport-module.html#_active_threads">_active_threads</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_APPEND">_FLAG_APPEND</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_BINARY">_FLAG_BINARY</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_BUFFERED">_FLAG_BUFFERED</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_LINE_BUFFERED">_FLAG_LINE_BUFFERED</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_READ">_FLAG_READ</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_UNIVERSAL_NEWLINE">_FLAG_UNIVERSAL_NEWLINE</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_WRITE">_FLAG_WRITE</a><br />
+<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_counter">_g_thread_counter</a><br />
+<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_ids">_g_thread_ids</a><br />
+<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_lock">_g_thread_lock</a><br />
+<a target="mainFrame" href="../private/paramiko.sftp_server-module.html#_hash_class">_hash_class</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#_logger">_logger</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP">_MSG_KEXDH_GEX_GROUP</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT">_MSG_KEXDH_GEX_INIT</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY">_MSG_KEXDH_GEX_REPLY</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST">_MSG_KEXDH_GEX_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_INIT">_MSG_KEXDH_INIT</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY">_MSG_KEXDH_REPLY</a><br />
+<a target="mainFrame" href="../private/paramiko.util-module.html#_pfilter">_pfilter</a><br />
+<a target="mainFrame" href="../private/paramiko.sftp-module.html#_VERSION">_VERSION</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_FAILED">AUTH_FAILED</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_PARTIALLY_SUCCESSFUL">AUTH_PARTIALLY_SUCCESSFUL</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_SUCCESSFUL">AUTH_SUCCESSFUL</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_ATTRS">CMD_ATTRS</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_CLOSE">CMD_CLOSE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_DATA">CMD_DATA</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_HANDLE">CMD_HANDLE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_INIT">CMD_INIT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_LSTAT">CMD_LSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_MKDIR">CMD_MKDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAME">CMD_NAME</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAMES">CMD_NAMES</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPEN">CMD_OPEN</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPENDIR">CMD_OPENDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READ">CMD_READ</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READDIR">CMD_READDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READLINK">CMD_READLINK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RMDIR">CMD_RMDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SETSTAT">CMD_SETSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STAT">CMD_STAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STATUS">CMD_STATUS</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SYMLINK">CMD_SYMLINK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_VERSION">CMD_VERSION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_WRITE">CMD_WRITE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#CONNECTION_FAILED_CODE">CONNECTION_FAILED_CODE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#CRITICAL">CRITICAL</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#CRITICAL">CRITICAL</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#DEBUG">DEBUG</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#DEBUG">DEBUG</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER">DISCONNECT_AUTH_CANCELLED_BY_USER</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE">DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_SERVICE_NOT_AVAILABLE">DISCONNECT_SERVICE_NOT_AVAILABLE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#ERROR">ERROR</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#ERROR">ERROR</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#G">G</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#INFO">INFO</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#INFO">INFO</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_CLOSE">MSG_CHANNEL_CLOSE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_DATA">MSG_CHANNEL_DATA</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_EOF">MSG_CHANNEL_EOF</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA">MSG_CHANNEL_EXTENDED_DATA</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_FAILURE">MSG_CHANNEL_FAILURE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN">MSG_CHANNEL_OPEN</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE">MSG_CHANNEL_OPEN_FAILURE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS">MSG_CHANNEL_OPEN_SUCCESS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_REQUEST">MSG_CHANNEL_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_SUCCESS">MSG_CHANNEL_SUCCESS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST">MSG_CHANNEL_WINDOW_ADJUST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_DEBUG">MSG_DEBUG</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_DISCONNECT">MSG_DISCONNECT</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_GLOBAL_REQUEST">MSG_GLOBAL_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_IGNORE">MSG_IGNORE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_KEXINIT">MSG_KEXINIT</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_NAMES">MSG_NAMES</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_NEWKEYS">MSG_NEWKEYS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_REQUEST_FAILURE">MSG_REQUEST_FAILURE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_REQUEST_SUCCESS">MSG_REQUEST_SUCCESS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_SERVICE_ACCEPT">MSG_SERVICE_ACCEPT</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_SERVICE_REQUEST">MSG_SERVICE_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_UNIMPLEMENTED">MSG_UNIMPLEMENTED</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_BANNER">MSG_USERAUTH_BANNER</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_FAILURE">MSG_USERAUTH_FAILURE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST">MSG_USERAUTH_INFO_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_RESPONSE">MSG_USERAUTH_INFO_RESPONSE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_PK_OK">MSG_USERAUTH_PK_OK</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_REQUEST">MSG_USERAUTH_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_SUCCESS">MSG_USERAUTH_SUCCESS</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#P">P</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_EOF">SFTP_EOF</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FAILURE">SFTP_FAILURE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_APPEND">SFTP_FLAG_APPEND</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_CREATE">SFTP_FLAG_CREATE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_EXCL">SFTP_FLAG_EXCL</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_READ">SFTP_FLAG_READ</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OK">SFTP_OK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED">SFTP_OP_UNSUPPORTED</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED">SFTP_PERMISSION_DENIED</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER">SSH2_AGENT_IDENTITIES_ANSWER</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE">SSH2_AGENT_SIGN_RESPONSE</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES">SSH2_AGENTC_REQUEST_IDENTITIES</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST">SSH2_AGENTC_SIGN_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#WARNING">WARNING</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#WARNING">WARNING</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-everything.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko-module.html b/docs/private/toc-paramiko-module.html
new file mode 100644
index 0000000..e6f4d8b
--- /dev/null
+++ b/docs/private/toc-paramiko-module.html
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko-module.html">paramiko</a></b></font></center>
+<hr>
+
+<!-- =========== START OF MODULES =========== -->
+<font size="+1"><b>Modules</b></font><br />
+<a target="mainFrame" href="paramiko.agent-module.html">agent</a><br />
+<a target="mainFrame" href="../private/paramiko.auth_handler-module.html">auth_handler</a><br />
+<a target="mainFrame" href="../private/paramiko.ber-module.html">ber</a><br />
+<a target="mainFrame" href="../private/paramiko.channel-module.html">channel</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html">common</a><br />
+<a target="mainFrame" href="../private/paramiko.compress-module.html">compress</a><br />
+<a target="mainFrame" href="paramiko.dsskey-module.html">dsskey</a><br />
+<a target="mainFrame" href="paramiko.file-module.html">file</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html">kex_gex</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html">kex_group1</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html">logging22</a><br />
+<a target="mainFrame" href="paramiko.message-module.html">message</a><br />
+<a target="mainFrame" href="../private/paramiko.packet-module.html">packet</a><br />
+<a target="mainFrame" href="../private/paramiko.pipe-module.html">pipe</a><br />
+<a target="mainFrame" href="paramiko.pkey-module.html">pkey</a><br />
+<a target="mainFrame" href="../private/paramiko.primes-module.html">primes</a><br />
+<a target="mainFrame" href="paramiko.rsakey-module.html">rsakey</a><br />
+<a target="mainFrame" href="paramiko.server-module.html">server</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html">sftp</a><br />
+<a target="mainFrame" href="paramiko.sftp_attr-module.html">sftp_attr</a><br />
+<a target="mainFrame" href="paramiko.sftp_client-module.html">sftp_client</a><br />
+<a target="mainFrame" href="paramiko.sftp_file-module.html">sftp_file</a><br />
+<a target="mainFrame" href="paramiko.sftp_handle-module.html">sftp_handle</a><br />
+<a target="mainFrame" href="paramiko.sftp_server-module.html">sftp_server</a><br />
+<a target="mainFrame" href="paramiko.sftp_si-module.html">sftp_si</a><br />
+<a target="mainFrame" href="../private/paramiko.ssh_exception-module.html">ssh_exception</a><br />
+<a target="mainFrame" href="paramiko.transport-module.html">transport</a><br />
+<a target="mainFrame" href="paramiko.util-module.html">util</a><br />
+<br />
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="paramiko.Agent-class.html">Agent</a><br />
+<a target="mainFrame" href="paramiko.AgentKey-class.html">AgentKey</a><br />
+<a target="mainFrame" href="../private/paramiko.AuthHandler-class.html">AuthHandler</a><br />
+<a target="mainFrame" href="../private/paramiko.BaseSFTP-class.html">BaseSFTP</a><br />
+<a target="mainFrame" href="paramiko.BufferedFile-class.html">BufferedFile</a><br />
+<a target="mainFrame" href="paramiko.Channel-class.html">Channel</a><br />
+<a target="mainFrame" href="../private/paramiko.ChannelFile-class.html">ChannelFile</a><br />
+<a target="mainFrame" href="paramiko.DSSKey-class.html">DSSKey</a><br />
+<a target="mainFrame" href="paramiko.Message-class.html">Message</a><br />
+<a target="mainFrame" href="../private/paramiko.Packetizer-class.html">Packetizer</a><br />
+<a target="mainFrame" href="../private/paramiko.PKey-class.html">PKey</a><br />
+<a target="mainFrame" href="paramiko.RSAKey-class.html">RSAKey</a><br />
+<a target="mainFrame" href="paramiko.SecurityOptions-class.html">SecurityOptions</a><br />
+<a target="mainFrame" href="../private/paramiko.ServerInterface-class.html">ServerInterface</a><br />
+<a target="mainFrame" href="paramiko.SFTP-class.html">SFTP</a><br />
+<a target="mainFrame" href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a><br />
+<a target="mainFrame" href="paramiko.SFTPClient-class.html">SFTPClient</a><br />
+<a target="mainFrame" href="paramiko.SFTPFile-class.html">SFTPFile</a><br />
+<a target="mainFrame" href="paramiko.SFTPHandle-class.html">SFTPHandle</a><br />
+<a target="mainFrame" href="paramiko.SFTPServer-class.html">SFTPServer</a><br />
+<a target="mainFrame" href="../private/paramiko.SFTPServerInterface-class.html">SFTPServerInterface</a><br />
+<a target="mainFrame" href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a><br />
+<a target="mainFrame" href="paramiko.Transport-class.html">Transport</a><br />
+<a target="mainFrame" href="../private/paramiko.ServerInterface-class.html">x</a><br />
+<br />
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<font size="+1"><b>Exceptions</b></font><br />
+<a target="mainFrame" href="paramiko.BadAuthenticationType-class.html">BadAuthenticationType</a><br />
+<a target="mainFrame" href="paramiko.PasswordRequiredException-class.html">PasswordRequiredException</a><br />
+<a target="mainFrame" href="paramiko.SFTPError-class.html">SFTPError</a><br />
+<a target="mainFrame" href="paramiko.SSHException-class.html">SSHException</a><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__author__">__author__</a><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__date__">__date__</a><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__license__">__license__</a><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__version__">__version__</a><br />
+<a target="mainFrame" href="../private/paramiko-module.html#__version_info__">__version_info__</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.agent-module.html b/docs/private/toc-paramiko.agent-module.html
new file mode 100644
index 0000000..67aa397
--- /dev/null
+++ b/docs/private/toc-paramiko.agent-module.html
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.agent</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.agent-module.html">agent</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER">SSH2_AGENT_IDENTITIES_ANSWER</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE">SSH2_AGENT_SIGN_RESPONSE</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES">SSH2_AGENTC_REQUEST_IDENTITIES</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST">SSH2_AGENTC_SIGN_REQUEST</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.agent-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.auth_handler-module.html b/docs/private/toc-paramiko.auth_handler-module.html
new file mode 100644
index 0000000..a82871d
--- /dev/null
+++ b/docs/private/toc-paramiko.auth_handler-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.auth_handler</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.auth_handler-module.html">auth_handler</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.ber-module.html b/docs/private/toc-paramiko.ber-module.html
new file mode 100644
index 0000000..2dd81d0
--- /dev/null
+++ b/docs/private/toc-paramiko.ber-module.html
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ber</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.ber-module.html">ber</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="../private/paramiko.ber.BER-class.html">BER</a><br />
+<br />
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<font size="+1"><b>Exceptions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.ber.BERException-class.html">BERException</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.channel-module.html b/docs/private/toc-paramiko.channel-module.html
new file mode 100644
index 0000000..d0eb4d9
--- /dev/null
+++ b/docs/private/toc-paramiko.channel-module.html
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.channel</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.channel-module.html">channel</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="../private/paramiko.channel.ChannelStderrFile-class.html">ChannelStderrFile</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.common-module.html b/docs/private/toc-paramiko.common-module.html
new file mode 100644
index 0000000..3fe063c
--- /dev/null
+++ b/docs/private/toc-paramiko.common-module.html
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.common</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.common-module.html">common</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_FAILED">AUTH_FAILED</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_PARTIALLY_SUCCESSFUL">AUTH_PARTIALLY_SUCCESSFUL</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#AUTH_SUCCESSFUL">AUTH_SUCCESSFUL</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#CONNECTION_FAILED_CODE">CONNECTION_FAILED_CODE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#CRITICAL">CRITICAL</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#DEBUG">DEBUG</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_AUTH_CANCELLED_BY_USER">DISCONNECT_AUTH_CANCELLED_BY_USER</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE">DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#DISCONNECT_SERVICE_NOT_AVAILABLE">DISCONNECT_SERVICE_NOT_AVAILABLE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#ERROR">ERROR</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#INFO">INFO</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_CLOSE">MSG_CHANNEL_CLOSE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_DATA">MSG_CHANNEL_DATA</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_EOF">MSG_CHANNEL_EOF</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_EXTENDED_DATA">MSG_CHANNEL_EXTENDED_DATA</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_FAILURE">MSG_CHANNEL_FAILURE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN">MSG_CHANNEL_OPEN</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_FAILURE">MSG_CHANNEL_OPEN_FAILURE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_OPEN_SUCCESS">MSG_CHANNEL_OPEN_SUCCESS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_REQUEST">MSG_CHANNEL_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_SUCCESS">MSG_CHANNEL_SUCCESS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_CHANNEL_WINDOW_ADJUST">MSG_CHANNEL_WINDOW_ADJUST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_DEBUG">MSG_DEBUG</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_DISCONNECT">MSG_DISCONNECT</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_GLOBAL_REQUEST">MSG_GLOBAL_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_IGNORE">MSG_IGNORE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_KEXINIT">MSG_KEXINIT</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_NAMES">MSG_NAMES</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_NEWKEYS">MSG_NEWKEYS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_REQUEST_FAILURE">MSG_REQUEST_FAILURE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_REQUEST_SUCCESS">MSG_REQUEST_SUCCESS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_SERVICE_ACCEPT">MSG_SERVICE_ACCEPT</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_SERVICE_REQUEST">MSG_SERVICE_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_UNIMPLEMENTED">MSG_UNIMPLEMENTED</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_BANNER">MSG_USERAUTH_BANNER</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_FAILURE">MSG_USERAUTH_FAILURE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_REQUEST">MSG_USERAUTH_INFO_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_INFO_RESPONSE">MSG_USERAUTH_INFO_RESPONSE</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_PK_OK">MSG_USERAUTH_PK_OK</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_REQUEST">MSG_USERAUTH_REQUEST</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#MSG_USERAUTH_SUCCESS">MSG_USERAUTH_SUCCESS</a><br />
+<a target="mainFrame" href="../private/paramiko.common-module.html#WARNING">WARNING</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.compress-module.html b/docs/private/toc-paramiko.compress-module.html
new file mode 100644
index 0000000..df10cb8
--- /dev/null
+++ b/docs/private/toc-paramiko.compress-module.html
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.compress</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.compress-module.html">compress</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="../private/paramiko.compress.ZlibCompressor-class.html">ZlibCompressor</a><br />
+<a target="mainFrame" href="../private/paramiko.compress.ZlibDecompressor-class.html">ZlibDecompressor</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.dsskey-module.html b/docs/private/toc-paramiko.dsskey-module.html
new file mode 100644
index 0000000..dbdf69c
--- /dev/null
+++ b/docs/private/toc-paramiko.dsskey-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.dsskey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.dsskey-module.html">dsskey</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.dsskey-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.file-module.html b/docs/private/toc-paramiko.file-module.html
new file mode 100644
index 0000000..9cda933
--- /dev/null
+++ b/docs/private/toc-paramiko.file-module.html
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.file</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.file-module.html">file</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_APPEND">_FLAG_APPEND</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_BINARY">_FLAG_BINARY</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_BUFFERED">_FLAG_BUFFERED</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_LINE_BUFFERED">_FLAG_LINE_BUFFERED</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_READ">_FLAG_READ</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_UNIVERSAL_NEWLINE">_FLAG_UNIVERSAL_NEWLINE</a><br />
+<a target="mainFrame" href="../private/paramiko.file-module.html#_FLAG_WRITE">_FLAG_WRITE</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.file-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.kex_gex-module.html b/docs/private/toc-paramiko.kex_gex-module.html
new file mode 100644
index 0000000..fd9acc8
--- /dev/null
+++ b/docs/private/toc-paramiko.kex_gex-module.html
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.kex_gex</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.kex_gex-module.html">kex_gex</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex.KexGex-class.html">KexGex</a><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_GROUP">_MSG_KEXDH_GEX_GROUP</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_INIT">_MSG_KEXDH_GEX_INIT</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REPLY">_MSG_KEXDH_GEX_REPLY</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_gex-module.html#_MSG_KEXDH_GEX_REQUEST">_MSG_KEXDH_GEX_REQUEST</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.kex_group1-module.html b/docs/private/toc-paramiko.kex_group1-module.html
new file mode 100644
index 0000000..ca51eb0
--- /dev/null
+++ b/docs/private/toc-paramiko.kex_group1-module.html
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.kex_group1</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.kex_group1-module.html">kex_group1</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1.KexGroup1-class.html">KexGroup1</a><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_INIT">_MSG_KEXDH_INIT</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#_MSG_KEXDH_REPLY">_MSG_KEXDH_REPLY</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#G">G</a><br />
+<a target="mainFrame" href="../private/paramiko.kex_group1-module.html#P">P</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.logging22-module.html b/docs/private/toc-paramiko.logging22-module.html
new file mode 100644
index 0000000..6b96de4
--- /dev/null
+++ b/docs/private/toc-paramiko.logging22-module.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.logging22</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.logging22-module.html">logging22</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="../private/paramiko.logging22.Formatter-class.html">Formatter</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22.logger-class.html">logger</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22.StreamHandler-class.html">StreamHandler</a><br />
+<br />
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#getLogger">getLogger</a><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#_logger">_logger</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#CRITICAL">CRITICAL</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#DEBUG">DEBUG</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#ERROR">ERROR</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#INFO">INFO</a><br />
+<a target="mainFrame" href="../private/paramiko.logging22-module.html#WARNING">WARNING</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.message-module.html b/docs/private/toc-paramiko.message-module.html
new file mode 100644
index 0000000..13e6444
--- /dev/null
+++ b/docs/private/toc-paramiko.message-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.message</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.message-module.html">message</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.message-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.packet-module.html b/docs/private/toc-paramiko.packet-module.html
new file mode 100644
index 0000000..670fb37
--- /dev/null
+++ b/docs/private/toc-paramiko.packet-module.html
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.packet</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.packet-module.html">packet</a></b></font></center>
+<hr>
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<font size="+1"><b>Exceptions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.packet.NeedRekeyException-class.html">NeedRekeyException</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.pipe-module.html b/docs/private/toc-paramiko.pipe-module.html
new file mode 100644
index 0000000..4a6b775
--- /dev/null
+++ b/docs/private/toc-paramiko.pipe-module.html
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.pipe</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.pipe-module.html">pipe</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="../private/paramiko.pipe.PosixPipe-class.html">PosixPipe</a><br />
+<a target="mainFrame" href="../private/paramiko.pipe.WindowsPipe-class.html">WindowsPipe</a><br />
+<br />
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.pipe-module.html#make_pipe">make_pipe</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.pkey-module.html b/docs/private/toc-paramiko.pkey-module.html
new file mode 100644
index 0000000..56fa96f
--- /dev/null
+++ b/docs/private/toc-paramiko.pkey-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.pkey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.pkey-module.html">pkey</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.pkey-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.primes-module.html b/docs/private/toc-paramiko.primes-module.html
new file mode 100644
index 0000000..356d9bd
--- /dev/null
+++ b/docs/private/toc-paramiko.primes-module.html
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.primes</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.primes-module.html">primes</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="../private/paramiko.primes.ModulusPack-class.html">ModulusPack</a><br />
+<br />
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.primes-module.html#_generate_prime">_generate_prime</a><br />
+<a target="mainFrame" href="../private/paramiko.primes-module.html#_roll_random">_roll_random</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.rsakey-module.html b/docs/private/toc-paramiko.rsakey-module.html
new file mode 100644
index 0000000..117cc82
--- /dev/null
+++ b/docs/private/toc-paramiko.rsakey-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.rsakey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.rsakey-module.html">rsakey</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.rsakey-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.server-module.html b/docs/private/toc-paramiko.server-module.html
new file mode 100644
index 0000000..58cf1e4
--- /dev/null
+++ b/docs/private/toc-paramiko.server-module.html
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.server</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.server-module.html">server</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="paramiko.server.InteractiveQuery-class.html">InteractiveQuery</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.server-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.sftp-module.html b/docs/private/toc-paramiko.sftp-module.html
new file mode 100644
index 0000000..a2d59c4
--- /dev/null
+++ b/docs/private/toc-paramiko.sftp-module.html
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp-module.html">sftp</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.sftp-module.html#_VERSION">_VERSION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_ATTRS">CMD_ATTRS</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_CLOSE">CMD_CLOSE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_DATA">CMD_DATA</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_HANDLE">CMD_HANDLE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_INIT">CMD_INIT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_LSTAT">CMD_LSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_MKDIR">CMD_MKDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAME">CMD_NAME</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAMES">CMD_NAMES</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPEN">CMD_OPEN</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPENDIR">CMD_OPENDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READ">CMD_READ</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READDIR">CMD_READDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READLINK">CMD_READLINK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RMDIR">CMD_RMDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SETSTAT">CMD_SETSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STAT">CMD_STAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STATUS">CMD_STATUS</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SYMLINK">CMD_SYMLINK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_VERSION">CMD_VERSION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_WRITE">CMD_WRITE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_EOF">SFTP_EOF</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FAILURE">SFTP_FAILURE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_APPEND">SFTP_FLAG_APPEND</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_CREATE">SFTP_FLAG_CREATE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_EXCL">SFTP_FLAG_EXCL</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_READ">SFTP_FLAG_READ</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OK">SFTP_OK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED">SFTP_OP_UNSUPPORTED</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED">SFTP_PERMISSION_DENIED</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.sftp-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.sftp_attr-module.html b/docs/private/toc-paramiko.sftp_attr-module.html
new file mode 100644
index 0000000..e1180e3
--- /dev/null
+++ b/docs/private/toc-paramiko.sftp_attr-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_attr</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_attr-module.html">sftp_attr</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.sftp_attr-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.sftp_client-module.html b/docs/private/toc-paramiko.sftp_client-module.html
new file mode 100644
index 0000000..e2f94fd
--- /dev/null
+++ b/docs/private/toc-paramiko.sftp_client-module.html
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_client</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_client-module.html">sftp_client</a></b></font></center>
+<hr>
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.sftp_client-module.html#_to_unicode">_to_unicode</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.sftp_client-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.sftp_file-module.html b/docs/private/toc-paramiko.sftp_file-module.html
new file mode 100644
index 0000000..f270b0f
--- /dev/null
+++ b/docs/private/toc-paramiko.sftp_file-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_file</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_file-module.html">sftp_file</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.sftp_file-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.sftp_handle-module.html b/docs/private/toc-paramiko.sftp_handle-module.html
new file mode 100644
index 0000000..1df5358
--- /dev/null
+++ b/docs/private/toc-paramiko.sftp_handle-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_handle</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_handle-module.html">sftp_handle</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.sftp_handle-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.sftp_server-module.html b/docs/private/toc-paramiko.sftp_server-module.html
new file mode 100644
index 0000000..3c12fcc
--- /dev/null
+++ b/docs/private/toc-paramiko.sftp_server-module.html
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_server</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_server-module.html">sftp_server</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.sftp_server-module.html#_hash_class">_hash_class</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.sftp_server-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.sftp_si-module.html b/docs/private/toc-paramiko.sftp_si-module.html
new file mode 100644
index 0000000..75605b8
--- /dev/null
+++ b/docs/private/toc-paramiko.sftp_si-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_si</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_si-module.html">sftp_si</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.sftp_si-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.ssh_exception-module.html b/docs/private/toc-paramiko.ssh_exception-module.html
new file mode 100644
index 0000000..1567097
--- /dev/null
+++ b/docs/private/toc-paramiko.ssh_exception-module.html
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.ssh_exception</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="../private/paramiko.ssh_exception-module.html">ssh_exception</a></b></font></center>
+<hr>
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<font size="+1"><b>Exceptions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.ssh_exception.PartialAuthentication-class.html">PartialAuthentication</a><br />
+<br />
+
+<hr>
+<font size="-2">[<b>show&nbsp;private</b>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.transport-module.html b/docs/private/toc-paramiko.transport-module.html
new file mode 100644
index 0000000..d5d5651
--- /dev/null
+++ b/docs/private/toc-paramiko.transport-module.html
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.transport</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.transport-module.html">transport</a></b></font></center>
+<hr>
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<a target="mainFrame" href="../private/paramiko.transport-module.html#_join_lingering_threads">_join_lingering_threads</a><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.transport-module.html#_active_threads">_active_threads</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.transport-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc-paramiko.util-module.html b/docs/private/toc-paramiko.util-module.html
new file mode 100644
index 0000000..a290c16
--- /dev/null
+++ b/docs/private/toc-paramiko.util-module.html
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.util</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.util-module.html">util</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="paramiko.util.PFilter-class.html">PFilter</a><br />
+<br />
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<a target="mainFrame" href="paramiko.util-module.html#bit_length">bit_length</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#deflate_long">deflate_long</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary">format_binary</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#get_logger">get_logger</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#hexify">hexify</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#inflate_long">inflate_long</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#log_to_file">log_to_file</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#safe_string">safe_string</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#tb_strings">tb_strings</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#unhexify">unhexify</a><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_counter">_g_thread_counter</a><br />
+<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_ids">_g_thread_ids</a><br />
+<a target="mainFrame" href="../private/paramiko.util-module.html#_g_thread_lock">_g_thread_lock</a><br />
+<a target="mainFrame" href="../private/paramiko.util-module.html#_pfilter">_pfilter</a><br />
+<br />
+
+<hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc-paramiko.util-module.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/toc.html b/docs/private/toc.html
new file mode 100644
index 0000000..fd91230
--- /dev/null
+++ b/docs/private/toc.html
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Table of Contents</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b>Table&nbsp;of&nbsp;Contents</b></font></center>
+<hr>
+<a target="moduleFrame" href="toc-everything.html">Everything</a><br />
+
+<!-- =========== START OF PACKAGES =========== -->
+<br /><font size="+1"><b>Packages</b></font><br />
+<a target="moduleFrame" href="toc-paramiko-module.html">paramiko</a><br />
+
+<!-- =========== START OF MODULES =========== -->
+<br /><font size="+1"><b>Modules</b></font><br />
+<a target="moduleFrame" href="toc-paramiko.agent-module.html">paramiko.agent</a><br />
+<a target="moduleFrame" href="toc-paramiko.auth_handler-module.html">paramiko.auth_handler</a><br />
+<a target="moduleFrame" href="toc-paramiko.ber-module.html">paramiko.ber</a><br />
+<a target="moduleFrame" href="toc-paramiko.channel-module.html">paramiko.channel</a><br />
+<a target="moduleFrame" href="toc-paramiko.common-module.html">paramiko.common</a><br />
+<a target="moduleFrame" href="toc-paramiko.compress-module.html">paramiko.compress</a><br />
+<a target="moduleFrame" href="toc-paramiko.dsskey-module.html">paramiko.dsskey</a><br />
+<a target="moduleFrame" href="toc-paramiko.file-module.html">paramiko.file</a><br />
+<a target="moduleFrame" href="toc-paramiko.kex_gex-module.html">paramiko.kex_gex</a><br />
+<a target="moduleFrame" href="toc-paramiko.kex_group1-module.html">paramiko.kex_group1</a><br />
+<a target="moduleFrame" href="toc-paramiko.logging22-module.html">paramiko.logging22</a><br />
+<a target="moduleFrame" href="toc-paramiko.message-module.html">paramiko.message</a><br />
+<a target="moduleFrame" href="toc-paramiko.packet-module.html">paramiko.packet</a><br />
+<a target="moduleFrame" href="toc-paramiko.pipe-module.html">paramiko.pipe</a><br />
+<a target="moduleFrame" href="toc-paramiko.pkey-module.html">paramiko.pkey</a><br />
+<a target="moduleFrame" href="toc-paramiko.primes-module.html">paramiko.primes</a><br />
+<a target="moduleFrame" href="toc-paramiko.rsakey-module.html">paramiko.rsakey</a><br />
+<a target="moduleFrame" href="toc-paramiko.server-module.html">paramiko.server</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp-module.html">paramiko.sftp</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_attr-module.html">paramiko.sftp_attr</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_client-module.html">paramiko.sftp_client</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_file-module.html">paramiko.sftp_file</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_handle-module.html">paramiko.sftp_handle</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_server-module.html">paramiko.sftp_server</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_si-module.html">paramiko.sftp_si</a><br />
+<a target="moduleFrame" href="toc-paramiko.ssh_exception-module.html">paramiko.ssh_exception</a><br />
+<a target="moduleFrame" href="toc-paramiko.transport-module.html">paramiko.transport</a><br />
+<a target="moduleFrame" href="toc-paramiko.util-module.html">paramiko.util</a><br />
+
+<br /><hr>
+<font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/toc.html">hide&nbsp;private</a>]</font>
+</body>
+</html>
diff --git a/docs/private/trees.html b/docs/private/trees.html
new file mode 100644
index 0000000..d762eb6
--- /dev/null
+++ b/docs/private/trees.html
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Module and Class Hierarchies</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[show&nbsp;private&nbsp;|&nbsp;<a href="../public/trees.html">hide&nbsp;private</a>]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="trees.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE HIERARCHY =========== -->
+<h2>Module Hierarchy</h2>
+<ul>
+<li> <b><a href="paramiko-module.html"><code>paramiko</code></a></b>: <i><i>Paramiko</i> (a combination of the esperanto words for
+&quot;paranoid&quot; and &quot;friend&quot;) is a module for python 2.3
+or greater that implements the SSH2 protocol for secure (encrypted and
+authenticated) connections to remote machines.</i>
+ <ul>
+ <li> <b><a href="paramiko.agent-module.html"><code>agent</code></a></b>: <i>SSH Agent interface for Unix clients.</i>
+ <li> <b><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></b>: <i><a href="paramiko.DSSKey-class.html"
+class="link"><code>DSSKey</code></a></i>
+ <li> <b><a href="paramiko.file-module.html"><code>file</code></a></b>: <i>BufferedFile.</i>
+ <li> <b><a href="paramiko.message-module.html"><code>message</code></a></b>: <i>Implementation of an SSH2 &quot;message&quot;.</i>
+ <li> <b><a href="paramiko.pkey-module.html"><code>pkey</code></a></b>: <i>Common API for all public keys.</i>
+ <li> <b><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></b>: <i><a href="paramiko.RSAKey-class.html"
+class="link"><code>RSAKey</code></a></i>
+ <li> <b><a href="paramiko.server-module.html"><code>server</code></a></b>: <i><a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> is an interface to override
+for server support.</i>
+ <li> <b><a href="paramiko.sftp-module.html"><code>sftp</code></a></b>
+ <li> <b><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></b>
+ <li> <b><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></b>: <i>Client-mode SFTP support.</i>
+ <li> <b><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></b>: <i><a href="paramiko.SFTPFile-class.html"
+class="link"><code>SFTPFile</code></a></i>
+ <li> <b><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></b>: <i>Abstraction of an SFTP file handle (for server mode).</i>
+ <li> <b><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></b>: <i>Server-mode SFTP support.</i>
+ <li> <b><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></b>: <i><a href="../private/paramiko.SFTPServerInterface-class.html"
+class="link"><code>SFTPServerInterface</code></a> is an interface to
+override for SFTP server support.</i>
+ <li> <b><a href="paramiko.transport-module.html"><code>transport</code></a></b>: <i><a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> handles the core SSH2
+protocol.</i>
+ <li> <b><a href="paramiko.util-module.html"><code>util</code></a></b>: <i>Useful functions used by the rest of paramiko.</i>
+ <li> <b><a href="../private/paramiko.auth_handler-module.html"><code>auth_handler</code></a></b>: <i><a href="../private/paramiko.AuthHandler-class.html"
+class="link"><code>AuthHandler</code></a></i>
+ <li> <b><a href="../private/paramiko.ber-module.html"><code>ber</code></a></b>
+ <li> <b><a href="../private/paramiko.channel-module.html"><code>channel</code></a></b>: <i>Abstraction for an SSH2 channel.</i>
+ <li> <b><a href="../private/paramiko.common-module.html"><code>common</code></a></b>: <i>Common constants and global variables.</i>
+ <li> <b><a href="../private/paramiko.compress-module.html"><code>compress</code></a></b>: <i>Compression implementations for a Transport.</i>
+ <li> <b><a href="../private/paramiko.kex_gex-module.html"><code>kex_gex</code></a></b>: <i>Variant on <a
+href="../private/paramiko.kex_group1.KexGroup1-class.html"
+class="link"><code>KexGroup1</code></a> where the prime &quot;p&quot; and
+generator &quot;g&quot; are provided by the server.</i>
+ <li> <b><a href="../private/paramiko.kex_group1-module.html"><code>kex_group1</code></a></b>: <i>Standard SSH key exchange (&quot;kex&quot; if you wanna sound
+cool).</i>
+ <li> <b><a href="../private/paramiko.logging22-module.html"><code>logging22</code></a></b>: <i>Stub out logging on python &lt; 2.3.</i>
+ <li> <b><a href="../private/paramiko.packet-module.html"><code>packet</code></a></b>: <i>Packetizer.</i>
+ <li> <b><a href="../private/paramiko.pipe-module.html"><code>pipe</code></a></b>: <i>Abstraction of a one-way pipe where the read end can be used in
+select().</i>
+ <li> <b><a href="../private/paramiko.primes-module.html"><code>primes</code></a></b>: <i>Utility functions for dealing with primes.</i>
+ <li> <b><a href="../private/paramiko.ssh_exception-module.html"><code>ssh_exception</code></a></b>: <i>Exceptions defined by paramiko.</i>
+ </ul>
+</ul>
+
+<!-- =========== START OF CLASS HIERARCHY =========== -->
+<h2>Class Hierarchy</h2>
+<ul>
+ <li> <b><a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></b>: <i>
+The most base type</i>
+ <ul>
+ <li> <b><a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></b>: <i>
+Reusable base class to implement python-style file buffering around a
+simpler stream.</i>
+ <ul>
+ <li> <b><a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></b>: <i>
+Proxy object for a file on the remote server, in client mode SFTP.</i>
+ <li> <b><a href="../private/paramiko.ChannelFile-class.html"><code>paramiko.ChannelFile</code></a></b>: <i>
+A file-like wrapper around <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</i>
+ <ul>
+ <li> <b><a href="../private/paramiko.channel.ChannelStderrFile-class.html"><code>paramiko.channel.ChannelStderrFile</code></a></b>
+ </ul>
+ </ul>
+ <li> <b><a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></b>: <i>
+A secure tunnel across an SSH <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>.</i>
+ <li> <b><a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></b>: <i>
+A query (set of prompts) for a user during interactive
+authentication.</i>
+ <li> <b><a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></b>: <i>
+An SSH2 <i>Message</i> is a stream of bytes that encodes some
+combination of strings, integers, bools, and infinite-precision integers
+(known in python as <i>long</i>s).</i>
+ <li> <b><a href="paramiko.util.PFilter-class.html"><code>paramiko.util.PFilter</code></a></b>
+ <li> <b><a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></b>: <i>
+Simple object containing the security preferences of an ssh
+transport.</i>
+ <li> <b><a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></b>: <i>
+Representation of the attributes of a file (or proxied file) for SFTP
+in client or server mode.</i>
+ <li> <b><a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></b>: <i>
+Abstract object representing a handle to an open file (or folder) in
+an SFTP server implementation.</i>
+ <li> <b><a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></b>: <i>
+type(object) -&gt; the object's type type(name, bases, dict) -&gt; a
+new type</i>
+ <li> <b><a href="../private/threading._Verbose-class.html"><code>threading._Verbose</code></a></b>
+ <ul>
+ <li> <b><a href="threading.Thread-class.html"><code>threading.Thread</code></a></b>
+ <ul>
+ <li> <b><a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></b>: <i>
+Handler for a subsytem in server mode.</i>
+ <ul>
+ <li> <b><a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></b>: <i>
+Server-side SFTP subsystem support.</i>
+ </ul>
+ <li> <b><a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></b>: <i>
+An SSH Transport attaches to a stream (usually a socket), negotiates
+an encrypted session, authenticates, and then creates stream tunnels,
+called <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>s, across the session.</i>
+ </ul>
+ </ul>
+ <li> <b><a href="../private/paramiko.AuthHandler-class.html"><code>paramiko.AuthHandler</code></a></b>: <i>
+Internal class to handle the mechanics of authentication.</i>
+ <li> <b><a href="../private/paramiko.BaseSFTP-class.html"><code>paramiko.BaseSFTP</code></a></b>
+ <ul>
+ <li> <b><a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></b>: <i>
+SFTP client object.</i>
+ <ul>
+ <li> <b><a href="paramiko.SFTP-class.html"><code>paramiko.SFTP</code></a></b>: <i>
+an alias for <a href="paramiko.SFTPClient-class.html"
+class="link"><code>SFTPClient</code></a> for backwards compatability</i>
+ </ul>
+ <li> <b><a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></b>: <i>
+Server-side SFTP subsystem support.</i>
+ </ul>
+ <li> <b><a href="../private/paramiko.ber.BER-class.html"><code>paramiko.ber.BER</code></a></b>: <i>
+Robey's tiny little attempt at a BER decoder.</i>
+ <li> <b><a href="../private/paramiko.logging22.Formatter-class.html"><code>paramiko.logging22.Formatter</code></a></b>
+ <li> <b><a href="../private/paramiko.kex_gex.KexGex-class.html"><code>paramiko.kex_gex.KexGex</code></a></b>
+ <li> <b><a href="../private/paramiko.kex_group1.KexGroup1-class.html"><code>paramiko.kex_group1.KexGroup1</code></a></b>
+ <li> <b><a href="../private/paramiko.logging22.logger-class.html"><code>paramiko.logging22.logger</code></a></b>
+ <li> <b><a href="../private/paramiko.primes.ModulusPack-class.html"><code>paramiko.primes.ModulusPack</code></a></b>: <i>
+convenience object for holding the contents of the /etc/ssh/moduli
+file, on systems that have such a file.</i>
+ <li> <b><a href="../private/paramiko.Packetizer-class.html"><code>paramiko.Packetizer</code></a></b>: <i>
+Implementation of the base SSH packet protocol.</i>
+ <li> <b><a href="../private/paramiko.PKey-class.html"><code>paramiko.PKey</code></a></b>: <i>
+Base class for public keys.</i>
+ <ul>
+ <li> <b><a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></b>: <i>
+Private key held in a local SSH agent.</i>
+ <li> <b><a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></b>: <i>
+Representation of a DSS key which can be used to sign an verify SSH2
+data.</i>
+ <li> <b><a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></b>: <i>
+Representation of an RSA key which can be used to sign and verify SSH2
+data.</i>
+ </ul>
+ <li> <b><a href="../private/paramiko.pipe.PosixPipe-class.html"><code>paramiko.pipe.PosixPipe</code></a></b>
+ <li> <b><a href="../private/paramiko.ServerInterface-class.html"><code>paramiko.ServerInterface</code></a></b>: <i>
+This class defines an interface for controlling the behavior of
+paramiko in server mode.</i>
+ <li> <b><a href="../private/paramiko.SFTPServerInterface-class.html"><code>paramiko.SFTPServerInterface</code></a></b>: <i>
+This class defines an interface for controlling the behavior of
+paramiko when using the <a href="paramiko.SFTPServer-class.html"
+class="link"><code>SFTPServer</code></a> subsystem to provide an SFTP
+server.</i>
+ <li> <b><a href="../private/paramiko.logging22.StreamHandler-class.html"><code>paramiko.logging22.StreamHandler</code></a></b>
+ <li> <b><a href="../private/paramiko.pipe.WindowsPipe-class.html"><code>paramiko.pipe.WindowsPipe</code></a></b>: <i>
+On Windows, only an OS-level &quot;WinSock&quot; may be used in
+select(), but reads and writes must be to the actual socket object.</i>
+ <li> <b><a href="../private/paramiko.compress.ZlibCompressor-class.html"><code>paramiko.compress.ZlibCompressor</code></a></b>
+ <li> <b><a href="../private/paramiko.compress.ZlibDecompressor-class.html"><code>paramiko.compress.ZlibDecompressor</code></a></b>
+ </ul>
+ <li> <b><a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></b>: <i>
+Common base class for all exceptions.</i>
+ <ul>
+ <li> <b><a href="paramiko.SFTPError-class.html"><code>paramiko.SFTPError</code></a></b>
+ <li> <b><a href="paramiko.SSHException-class.html"><code>paramiko.SSHException</code></a></b>: <i>
+Exception raised by failures in SSH2 protocol negotiation or logic
+errors.</i>
+ <ul>
+ <li> <b><a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></b>: <i>
+Exception raised when an authentication type (like password) is used,
+but the server isn't allowing that type.</i>
+ <li> <b><a href="paramiko.PasswordRequiredException-class.html"><code>paramiko.PasswordRequiredException</code></a></b>: <i>
+Exception raised when a password is needed to unlock a private key
+file.</i>
+ <li> <b><a href="../private/paramiko.ssh_exception.PartialAuthentication-class.html"><code>paramiko.ssh_exception.PartialAuthentication</code></a></b>: <i>
+An internal exception thrown in the case of partial
+authentication.</i>
+ </ul>
+ <li> <b><a href="../private/paramiko.ber.BERException-class.html"><code>paramiko.ber.BERException</code></a></b>
+ <li> <b><a href="../private/paramiko.packet.NeedRekeyException-class.html"><code>paramiko.packet.NeedRekeyException</code></a></b>
+ </ul>
+ <li> <b><a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></b>: <i>
+Client interface for using private keys from an SSH agent running on
+the local machine.</i>
+</ul>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/__builtin__.object-class.html b/docs/public/__builtin__.object-class.html
new file mode 100644
index 0000000..f9ab2d2
--- /dev/null
+++ b/docs/public/__builtin__.object-class.html
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>__builtin__.object</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;__builtin__ ::
+ Class&nbsp;object
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/__builtin__.object-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="__builtin__.object-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type object</h2>
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a>,
+ <a href="paramiko.Channel-class.html"><code>Channel</code></a>,
+ <a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a>,
+ <a href="paramiko.Message-class.html"><code>Message</code></a>,
+ <a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a>,
+ <a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a>,
+ <a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a>,
+ <a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a>,
+ <a href="__builtin__.type-class.html"><code>type</code></a></dd></dl>
+
+<hr/>
+
+The most base type
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__init__(...) initializes x; see x.__class__.__doc__ for
+signature</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td>
+ <td><a name="__class__"></a><b><code>__class__</code></b> = <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ x.__init__(...) initializes x; see x.__class__.__doc__ for
+ signature
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__delattr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__delattr__('name') &lt;==&gt; del x.name
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__getattribute__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__getattribute__('name') &lt;==&gt; x.name
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__hash__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Hashing function)</i>
+ </h3>
+ x.__hash__() &lt;==&gt; hash(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+hash(x)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__new__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
+ <span class=sig-arg>S</span>,
+ <span class="sig-vararg">...</span>)</span>
+ </h3>
+ T.__new__(S, ...) -&gt; a new object with type S, a subtype of T
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+a new object with type S, a subtype of T
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__reduce__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__reduce__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ helper for pickle
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__reduce_ex__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__reduce_ex__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ helper for pickle
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ x.__repr__() &lt;==&gt; repr(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+repr(x)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__setattr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__setattr__('name', value) &lt;==&gt; x.name = value
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ x.__str__() &lt;==&gt; str(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+str(x)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/__builtin__.type-class.html b/docs/public/__builtin__.type-class.html
new file mode 100644
index 0000000..21075f7
--- /dev/null
+++ b/docs/public/__builtin__.type-class.html
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>__builtin__.type</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;__builtin__ ::
+ Class&nbsp;type
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/__builtin__.type-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="__builtin__.type-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type type</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>type</b>
+</pre><br />
+
+<hr/>
+
+type(object) -&gt; the object's type type(name, bases, dict) -&gt; a
+new type
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__call__" class="summary-sig-name"><code>__call__</code></a>(<span class=summary-sig-arg>x</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__call__(...) &lt;==&gt; x(...)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>x</span>,
+ <span class=summary-sig-arg>y</span>)</span></code>
+<br />
+x.__cmp__(y) &lt;==&gt; cmp(x,y)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">list of immediate subclasses</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__subclasses__" class="summary-sig-name"><code>__subclasses__</code></a>()</span></code>
+<br />
+__subclasses__() -&gt; list of immediate subclasses</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#mro" class="summary-sig-name"><code>mro</code></a>()</span></code>
+<br />
+return a type's method resolution order</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__init__(...) initializes x; see x.__class__.__doc__ for
+signature</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td>
+ <td><a name="__base__"></a><b><code>__base__</code></b> = <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></b> = <span title="(&lt;type 'object'&gt;,)"><code>(&lt;type&nbsp;'object'&gt;,) </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></b> = <span title="420">420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></b> = <span title="132">132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></b> = <span title="21995">21995&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></b> = <span title="20">20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></b> = <span title="(&lt;type 'type'&gt;, &lt;type 'object'&gt;)"><code>(&lt;type&nbsp;'type'&gt;,&nbsp;&lt;type&nbsp;'object'&gt;) </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></b> = <span title="'type'"><code><span class="variable-quote">'</span>type<span class="variable-quote">'</span> </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></b> = <span title="184">184&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__call__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__call__</span>(<span class=sig-arg>x</span>,
+ <span class="sig-vararg">...</span>)</span>
+ <br /><i>(Call operator)</i>
+ </h3>
+ x.__call__(...) &lt;==&gt; x(...)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+x(...)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__cmp__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__cmp__</span>(<span class=sig-arg>x</span>,
+ <span class=sig-arg>y</span>)</span>
+ <br /><i>(Comparison operator)</i>
+ </h3>
+ x.__cmp__(y) &lt;==&gt; cmp(x,y)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+cmp(x,y)
+</pre>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__delattr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__delattr__('name') &lt;==&gt; del x.name
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__delattr__"><code>__builtin__.object.__delattr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__getattribute__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__getattribute__('name') &lt;==&gt; x.name
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__getattribute__"><code>__builtin__.object.__getattribute__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__hash__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Hashing function)</i>
+ </h3>
+ x.__hash__() &lt;==&gt; hash(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+hash(x)
+</pre>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__hash__"><code>__builtin__.object.__hash__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__new__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
+ <span class=sig-arg>S</span>,
+ <span class="sig-vararg">...</span>)</span>
+ </h3>
+ T.__new__(S, ...) -&gt; a new object with type S, a subtype of T
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+a new object with type S, a subtype of T
+</pre>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ x.__repr__() &lt;==&gt; repr(x)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+<pre class="literalblock">
+repr(x)
+</pre>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__setattr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span>
+ </h3>
+ x.__setattr__('name', value) &lt;==&gt; x.name = value
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__setattr__"><code>__builtin__.object.__setattr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__subclasses__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__subclasses__</span>()</span>
+ </h3>
+ __subclasses__() -&gt; list of immediate subclasses
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+list of immediate subclasses </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="mro"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">mro</span>()</span>
+ </h3>
+ return a type's method resolution order
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+list </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__bases__"></a>
+<h3>__bases__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="(&lt;type 'object'&gt;,)"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+(&lt;type 'object'&gt;,) </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__basicsize__"></a>
+<h3>__basicsize__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="420"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+420&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__dictoffset__"></a>
+<h3>__dictoffset__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="132"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__flags__"></a>
+<h3>__flags__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="21995"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+21995&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__itemsize__"></a>
+<h3>__itemsize__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="20"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__mro__"></a>
+<h3>__mro__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>tuple</code>
+
+ </dd>
+<span title="(&lt;type 'type'&gt;, &lt;type 'object'&gt;)"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+(&lt;type 'type'&gt;, &lt;type 'object'&gt;) </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__name__"></a>
+<h3>__name__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>str</code>
+
+ </dd>
+<span title="'type'"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+<span class="variable-quote">'</span>type<span class="variable-quote">'</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__weakrefoffset__"></a>
+<h3>__weakrefoffset__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="184"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+184&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/epydoc.css b/docs/public/epydoc.css
new file mode 100644
index 0000000..46080bd
--- /dev/null
+++ b/docs/public/epydoc.css
@@ -0,0 +1,100 @@
+
+/* Body color */
+body { background: #ffffff; color: #000000; }
+
+/* Tables */
+table.summary, table.details, table.index
+ { background: #e8f0f8; color: #000000; }
+tr.summary, tr.details, tr.index
+ { background: #70b0f0; color: #000000;
+ text-align: left; font-size: 120%; }
+tr.group { background: #c0e0f8; color: #000000;
+ text-align: left; font-size: 120%;
+ font-style: italic; }
+
+/* Documentation page titles */
+h2.module { margin-top: 0.2em; }
+h2.class { margin-top: 0.2em; }
+
+/* Headings */
+h1.heading { font-size: +140%; font-style: italic;
+ font-weight: bold; }
+h2.heading { font-size: +125%; font-style: italic;
+ font-weight: bold; }
+h3.heading { font-size: +110%; font-style: italic;
+ font-weight: normal; }
+
+/* Base tree */
+pre.base-tree { font-size: 80%; margin: 0; }
+
+/* Details Sections */
+table.func-details { background: #e8f0f8; color: #000000;
+ border: 2px groove #c0d0d0;
+ padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
+h3.func-detail { background: transparent; color: #000000;
+ margin: 0 0 1em 0; }
+
+table.var-details { background: #e8f0f8; color: #000000;
+ border: 2px groove #c0d0d0;
+ padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
+h3.var-details { background: transparent; color: #000000;
+ margin: 0 0 1em 0; }
+
+/* Function signatures */
+.sig { background: transparent; color: #000000;
+ font-weight: bold; }
+.sig-name { background: transparent; color: #006080; }
+.sig-arg, .sig-kwarg, .sig-vararg
+ { background: transparent; color: #008060; }
+.sig-default { background: transparent; color: #602000; }
+.summary-sig { background: transparent; color: #000000; }
+.summary-sig-name { background: transparent; color: #204080; }
+.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg
+ { background: transparent; color: #008060; }
+
+/* Doctest blocks */
+.py-src { background: transparent; color: #000000; }
+.py-prompt { background: transparent; color: #005050;
+ font-weight: bold;}
+.py-string { background: transparent; color: #006030; }
+.py-comment { background: transparent; color: #003060; }
+.py-keyword { background: transparent; color: #600000; }
+.py-output { background: transparent; color: #404040; }
+pre.doctestblock { background: #f4faff; color: #000000;
+ padding: .5em; margin: 1em;
+ border: 1px solid #708890; }
+table pre.doctestblock
+ { background: #dce4ec; color: #000000;
+ padding: .5em; margin: 1em;
+ border: 1px solid #708890; }
+
+/* Variable values */
+pre.variable { background: #dce4ec; color: #000000;
+ padding: .5em; margin: 0;
+ border: 1px solid #708890; }
+.variable-linewrap { background: transparent; color: #604000; }
+.variable-ellipsis { background: transparent; color: #604000; }
+.variable-quote { background: transparent; color: #604000; }
+.re { background: transparent; color: #000000; }
+.re-char { background: transparent; color: #006030; }
+.re-op { background: transparent; color: #600000; }
+.re-group { background: transparent; color: #003060; }
+.re-ref { background: transparent; color: #404040; }
+
+/* Navigation bar */
+table.navbar { background: #a0c0ff; color: #0000ff;
+ border: 2px groove #c0d0d0; }
+th.navbar { background: #a0c0ff; color: #0000ff; }
+th.navselect { background: #70b0ff; color: #000000; }
+.nomargin { margin: 0; }
+
+/* Links */
+a:link { background: transparent; color: #0000ff; }
+a:visited { background: transparent; color: #204080; }
+a.navbar:link { background: transparent; color: #0000ff;
+ text-decoration: none; }
+a.navbar:visited { background: transparent; color: #204080;
+ text-decoration: none; }
+
+/* Lists */
+ul { margin-top: 0; }
diff --git a/docs/public/exceptions.Exception-class.html b/docs/public/exceptions.Exception-class.html
new file mode 100644
index 0000000..8e04fe7
--- /dev/null
+++ b/docs/public/exceptions.Exception-class.html
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>exceptions.Exception</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;exceptions ::
+ Class&nbsp;Exception
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/exceptions.Exception-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="exceptions.Exception-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class Exception</h2>
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a>,
+ <a href="paramiko.SSHException-class.html"><code>SSHException</code></a></dd></dl>
+
+<hr/>
+
+Common base class for all exceptions.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__getitem__"></a><span class="summary-sig"><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/frames.html b/docs/public/frames.html
new file mode 100644
index 0000000..77678a0
--- /dev/null
+++ b/docs/public/frames.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
+<html>
+<head>
+ <title> API Documentation </title>
+</head>
+<frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="toc.html" name="moduleListFrame">
+ <frame src="toc-everything.html" name="moduleFrame">
+ </frameset>
+ <frame src="paramiko-module.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/docs/public/help.html b/docs/public/help.html
new file mode 100644
index 0000000..99e33a2
--- /dev/null
+++ b/docs/public/help.html
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Help</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/help.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="help.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<center><h2> API Documentation </h2></center>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for this project. Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class. The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page. </p>
+
+<h2> Object Documentation </h2>
+
+ <p>Each <b>Package Documentation</b> page contains:
+ <ul>
+ <li> A description of the package. </li>
+ <li> A list of the modules and sub-packages contained by the
+ package. </li>
+ <li> A summary of the classes defined by the package. </li>
+ <li> A summary of the functions defined by the package. </li>
+ <li> A summary of the variables defined by the package. </li>
+ <li> A detailed description of each function defined by the
+ package. </li>
+ <li> A detailed description of each variable defined by the
+ package. </li>
+ </ul></p>
+
+ <p>Each <b>Module Documentation</b> page contains:
+ <ul>
+ <li> A description of the module. </li>
+ <li> A summary of the classes defined by the module. </li>
+ <li> A summary of the functions defined by the module. </li>
+ <li> A summary of the variables defined by the module. </li>
+ <li> A detailed description of each function defined by the
+ module. </li>
+ <li> A detailed description of each variable defined by the
+ module. </li>
+ </ul></p>
+
+ <p>Each <b>Class Documentation</b> page contains:
+ <ul>
+ <li> A class inheritance diagram. </li>
+ <li> A list of known subclasses. </li>
+ <li> A description of the class. </li>
+ <li> A summary of the methods defined by the class. </li>
+ <li> A summary of the instance variables defined by the class. </li>
+ <li> A summary of the class (static) variables defined by the
+ class. </li>
+ <li> A detailed description of each method defined by the
+ class. </li>
+ <li> A detailed description of each instance variable defined by the
+ class. </li>
+ <li> A detailed description of each class (static) variable defined
+ by the class. </li>
+ </ul></p>
+
+<h2> Project Documentation </h2>
+
+ <p> The <b>Trees</b> page contains the module and class hierarchies:
+ <ul>
+ <li> The <i>module hierarchy</i> lists every package and module, with
+ modules grouped into packages. At the top level, and within each
+ package, modules and sub-packages are listed alphabetically. </li>
+ <li> The <i>class hierarchy</i> lists every class, grouped by base
+ class. If a class has more than one base class, then it will be
+ listed under each base class. At the top level, and under each base
+ class, classes are listed alphabetically. </li>
+ </ul></p>
+
+ <p> The <b>Index</b> page contains indices of terms and
+ identifiers:
+ <ul>
+ <li> The <i>term index</i> lists every term indexed by any object's
+ documentation. For each term, the index provides links to each
+ place where the term is indexed. </li>
+ <li> The <i>identifier index</i> lists the (short) name of every package,
+ module, class, method, function, variable, and parameter. For each
+ identifier, the index provides a short description, and a link to
+ its documentation. </li>
+ </ul></p>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window. The upper-left frame displays the <i>project
+contents</i>, and the lower-left frame displays the <i>module
+contents</i>: </p>
+
+<center>
+<table class="summary" border="1" cellspacing="0" cellpadding="3">
+ <tr heigh="30%">
+ <td align="center">
+ <font size="-1">Project<br>Contents<hr>...</font></td>
+ <td align="center" rowspan="2" width="70%">
+ API<br>Documentation<br>Frame<br><br><br>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">
+ <font size="-1">Module<br>Contents<hr>&nbsp;<br>...<br>&nbsp;</font>
+ </td>
+ </tr>
+</table><br>
+</center>
+
+<p> The <b>project contents frame</b> contains a list of all packages
+and modules that are defined by the project. Clicking on an entry
+will display its contents in the module contents frame. Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <b>module contents frame</b> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package. Clicking on an entry will display its
+documentation in the API documentation frame. Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<b>frames</b>" and "<b>no frames</b>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages. The following table describes the labels
+on the navigation bar. Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+ <th>Label</th>
+ <th>Highlighted when...</th>
+ <th>Links to...</th>
+</tr>
+ <tr><td valign="top"><b>[Parent]</b></td>
+ <td valign="top"><i>(never highlighted)</i></td>
+ <td valign="top"> the parent of the current package </td></tr>
+ <tr><td valign="top"><b>[Package]</b></td>
+ <td valign="top">viewing a package</td>
+ <td valign="top">the package containing the current object
+ </td></tr>
+ <tr><td valign="top"><b>[Module]</b></td>
+ <td valign="top">viewing a module</td>
+ <td valign="top">the module containing the current object
+ </td></tr>
+ <tr><td valign="top"><b>[Class]</b></td>
+ <td valign="top">viewing a class </td>
+ <td valign="top">the class containing the current object</td></tr>
+ <tr><td valign="top"><b>[Trees]</b></td>
+ <td valign="top">viewing the trees page</td>
+ <td valign="top"> the trees page </td></tr>
+ <tr><td valign="top"><b>[Index]</b></td>
+ <td valign="top">viewing the index page</td>
+ <td valign="top"> the index page </td></tr>
+ <tr><td valign="top"><b>[Help]</b></td>
+ <td valign="top">viewing the help page</td>
+ <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<b>show private</b>" and "<b>hide private</b>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed. Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore. For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not. However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/index.html b/docs/public/index.html
new file mode 100644
index 0000000..77678a0
--- /dev/null
+++ b/docs/public/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
+<html>
+<head>
+ <title> API Documentation </title>
+</head>
+<frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="toc.html" name="moduleListFrame">
+ <frame src="toc-everything.html" name="moduleFrame">
+ </frameset>
+ <frame src="paramiko-module.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/docs/public/indices.html b/docs/public/indices.html
new file mode 100644
index 0000000..ce1f266
--- /dev/null
+++ b/docs/public/indices.html
@@ -0,0 +1,803 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Index</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Index&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/indices.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="indices.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+<br />
+
+<!-- =========== START OF IDENTIFIER INDEX =========== -->
+<table class="index" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="index">
+ <th colspan="2">Identifier Index</th></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td>
+ <td>Class in module <code>__builtin__</code></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__call__"><code>__call__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td>
+ <td>Class in module <code>__builtin__</code></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__cmp__"><code>__cmp__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#__del__"><code>__del__</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__delattr__"><code>__delattr__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__delattr__"><code>__delattr__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__getattribute__"><code>__getattribute__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__getattribute__"><code>__getattribute__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="exceptions.Exception-class.html#__getitem__"><code>__getitem__</code></a></td>
+ <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__hash__"><code>__hash__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__hash__"><code>__hash__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__hash__"><code>__hash__</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__hash__"><code>__hash__</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="exceptions.Exception-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Agent-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#__init__"><code>__init__</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#__iter__"><code>__iter__</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__new__"><code>__new__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__new__"><code>__new__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce__"><code>__reduce__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce_ex__"><code>__reduce_ex__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#__repr__"><code>__repr__</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__setattr__"><code>__setattr__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__setattr__"><code>__setattr__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#__slots__"><code>__slots__</code></a></td>
+ <td>Variable in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
+ <tr><td width="15%"><a href="exceptions.Exception-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#__str__"><code>__str__</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__subclasses__"><code>__subclasses__</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></td>
+ <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#accept"><code>accept</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add"><code>add</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_boolean"><code>add_boolean</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_byte"><code>add_byte</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_bytes"><code>add_bytes</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_int"><code>add_int</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_int64"><code>add_int64</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_list"><code>add_list</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_mpint"><code>add_mpint</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html#add_prompt"><code>add_prompt</code></a></td>
+ <td>Method in class <a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#add_server_key"><code>add_server_key</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#add_string"><code>add_string</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Agent-class.html"><code>Agent</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html"><code>agent</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html#allowed_types"><code>allowed_types</code></a></td>
+ <td>Variable in class <a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_interactive"><code>auth_interactive</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_none"><code>auth_none</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_password"><code>auth_password</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#auth_publickey"><code>auth_publickey</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#bit_length"><code>bit_length</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#can_sign"><code>can_sign</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#can_sign"><code>can_sign</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html"><code>Channel</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#chattr"><code>chattr</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chdir"><code>chdir</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#check"><code>check</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chmod"><code>chmod</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#chown"><code>chown</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#ciphers"><code>ciphers</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Agent-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#close"><code>close</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_ATTRS"><code>CMD_ATTRS</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_CLOSE"><code>CMD_CLOSE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_DATA"><code>CMD_DATA</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_EXTENDED"><code>CMD_EXTENDED</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY"><code>CMD_EXTENDED_REPLY</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_FSETSTAT"><code>CMD_FSETSTAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_FSTAT"><code>CMD_FSTAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_HANDLE"><code>CMD_HANDLE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_INIT"><code>CMD_INIT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_LSTAT"><code>CMD_LSTAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_MKDIR"><code>CMD_MKDIR</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_NAME"><code>CMD_NAME</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_NAMES"><code>CMD_NAMES</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_OPEN"><code>CMD_OPEN</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_OPENDIR"><code>CMD_OPENDIR</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READ"><code>CMD_READ</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READDIR"><code>CMD_READDIR</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_READLINK"><code>CMD_READLINK</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_REALPATH"><code>CMD_REALPATH</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_REMOVE"><code>CMD_REMOVE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_RENAME"><code>CMD_RENAME</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_RMDIR"><code>CMD_RMDIR</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_SETSTAT"><code>CMD_SETSTAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_STAT"><code>CMD_STAT</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_STATUS"><code>CMD_STATUS</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_SYMLINK"><code>CMD_SYMLINK</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_VERSION"><code>CMD_VERSION</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#CMD_WRITE"><code>CMD_WRITE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#compression"><code>compression</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#connect"><code>connect</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#convert_errno"><code>convert_errno</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#deflate_long"><code>deflate_long</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#digests"><code>digests</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><code>exc_info</code></td>
+ <td>Function in module <code>sys</code></td></tr>
+ <tr><td width="15%"><a href="exceptions.Exception-class.html"><code>Exception</code></a></td>
+ <td>Class in module <code>exceptions</code></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#exec_command"><code>exec_command</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#file"><code>file</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.file-module.html"><code>file</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#fileno"><code>fileno</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util.PFilter-class.html#filter"><code>filter</code></a></td>
+ <td>Method in class <a href="paramiko.util.PFilter-class.html"><code>paramiko.util.PFilter</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#finish_subsystem"><code>finish_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#finish_subsystem"><code>finish_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_AMTIME"><code>FLAG_AMTIME</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_EXTENDED"><code>FLAG_EXTENDED</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><code>FLAG_PERMISSIONS</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_SIZE"><code>FLAG_SIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><code>FLAG_UIDGID</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#flush"><code>flush</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#format_binary"><code>format_binary</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#format_binary_line"><code>format_binary_line</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#format_binary_weird"><code>format_binary_weird</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html#from_stat"><code>from_stat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#from_transport"><code>from_transport</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#generate"><code>generate</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#generate"><code>generate</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#generate_key_bytes"><code>generate_key_bytes</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#get"><code>get</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#get_bits"><code>get_bits</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#get_bits"><code>get_bits</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_boolean"><code>get_boolean</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_byte"><code>get_byte</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_bytes"><code>get_bytes</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_exception"><code>get_exception</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_hexdump"><code>get_hexdump</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#get_id"><code>get_id</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_int"><code>get_int</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_int64"><code>get_int64</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Agent-class.html#get_keys"><code>get_keys</code></a></td>
+ <td>Method in class <a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_list"><code>get_list</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_log_channel"><code>get_log_channel</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#get_logger"><code>get_logger</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_mpint"><code>get_mpint</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#get_name"><code>get_name</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#get_pty"><code>get_pty</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_remainder"><code>get_remainder</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_remote_server_key"><code>get_remote_server_key</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_security_options"><code>get_security_options</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#get_server"><code>get_server</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_server_key"><code>get_server_key</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_so_far"><code>get_so_far</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#get_string"><code>get_string</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#get_thread_id"><code>get_thread_id</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#get_transport"><code>get_transport</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#get_username"><code>get_username</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#getcwd"><code>getcwd</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#getName"><code>getName</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#gettimeout"><code>gettimeout</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#gettimeout"><code>gettimeout</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#global_request"><code>global_request</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#hexify"><code>hexify</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#inflate_long"><code>inflate_long</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a></td>
+ <td>Class in module <a href="paramiko.server-module.html"><code>paramiko.server</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#invoke_shell"><code>invoke_shell</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#invoke_subsystem"><code>invoke_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#is_active"><code>is_active</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#is_authenticated"><code>is_authenticated</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#isAlive"><code>isAlive</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#isDaemon"><code>isDaemon</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#join"><code>join</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#kex"><code>kex</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html#key_types"><code>key_types</code></a></td>
+ <td>Class in module <a href="../private/paramiko.kex_group1-module.html"><code>paramiko.kex_group1</code></a> in class <a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#listdir"><code>listdir</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#listdir_attr"><code>listdir_attr</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#load_host_keys"><code>load_host_keys</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#load_server_moduli"><code>load_server_moduli</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#log_to_file"><code>log_to_file</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#lookup_ssh_host_config"><code>lookup_ssh_host_config</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#lstat"><code>lstat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#makefile"><code>makefile</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#makefile_stderr"><code>makefile_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><code>MAX_REQUEST_SIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html"><code>Message</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.message-module.html"><code>message</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#MIN_PACKET_SIZE"><code>MIN_PACKET_SIZE</code></a></td>
+ <td>Variable in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#mkdir"><code>mkdir</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#mod_inverse"><code>mod_inverse</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html#mro"><code>mro</code></a></td>
+ <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#next"><code>next</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#normalize"><code>normalize</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td>
+ <td>Class in module <code>__builtin__</code></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#open_channel"><code>open_channel</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#open_session"><code>open_session</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#open_sftp_client"><code>open_sftp_client</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko-module.html"><code>paramiko</code></a></td>
+ <td>Package</td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#parse_ssh_config"><code>parse_ssh_config</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a></td>
+ <td>Class in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.pkey-module.html"><code>pkey</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#prefetch"><code>prefetch</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#put"><code>put</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#read"><code>read</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#read"><code>read</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#readline"><code>readline</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#readlines"><code>readlines</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#readlink"><code>readlink</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv"><code>recv</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_exit_status"><code>recv_exit_status</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_ready"><code>recv_ready</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_stderr"><code>recv_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#recv_stderr_ready"><code>recv_stderr_ready</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#remove"><code>remove</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#rename"><code>rename</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#renegotiate_keys"><code>renegotiate_keys</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#resize_pty"><code>resize_pty</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Message-class.html#rewind"><code>rewind</code></a></td>
+ <td>Method in class <a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#rmdir"><code>rmdir</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#run"><code>run</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#run"><code>run</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#safe_string"><code>safe_string</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#seek"><code>seek</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#seek"><code>seek</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></td>
+ <td>Variable in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#send"><code>send</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#send_exit_status"><code>send_exit_status</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#send_ignore"><code>send_ignore</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#send_stderr"><code>send_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#sendall"><code>sendall</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#sendall_stderr"><code>sendall_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.server-module.html"><code>server</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#set_combine_stderr"><code>set_combine_stderr</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#set_file_attr"><code>set_file_attr</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#set_hexdump"><code>set_hexdump</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#set_keepalive"><code>set_keepalive</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#set_log_channel"><code>set_log_channel</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#set_name"><code>set_name</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#set_pipelined"><code>set_pipelined</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#set_subsystem_handler"><code>set_subsystem_handler</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#setblocking"><code>setblocking</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#setblocking"><code>setblocking</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#setDaemon"><code>setDaemon</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#setName"><code>setName</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#settimeout"><code>settimeout</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#settimeout"><code>settimeout</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTP-class.html"><code>SFTP</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html"><code>sftp</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE"><code>SFTP_BAD_MESSAGE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST"><code>SFTP_CONNECTION_LOST</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_DESC"><code>SFTP_DESC</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_EOF"><code>SFTP_EOF</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FAILURE"><code>SFTP_FAILURE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_APPEND"><code>SFTP_FLAG_APPEND</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_CREATE"><code>SFTP_FLAG_CREATE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_EXCL"><code>SFTP_FLAG_EXCL</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_READ"><code>SFTP_FLAG_READ</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC"><code>SFTP_FLAG_TRUNC</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE"><code>SFTP_FLAG_WRITE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION"><code>SFTP_NO_CONNECTION</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE"><code>SFTP_NO_SUCH_FILE</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_OK"><code>SFTP_OK</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED"><code>SFTP_OP_UNSUPPORTED</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED"><code>SFTP_PERMISSION_DENIED</code></a></td>
+ <td>Variable in module <a href="paramiko.sftp-module.html"><code>paramiko.sftp</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown"><code>shutdown</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown_read"><code>shutdown_read</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Channel-class.html#shutdown_write"><code>shutdown_write</code></a></td>
+ <td>Method in class <a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.AgentKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td>
+ <td>Method in class <a href="paramiko.AgentKey-class.html"><code>paramiko.AgentKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#sign_ssh_data"><code>sign_ssh_data</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER"><code>SSH2_AGENT_IDENTITIES_ANSWER</code></a></td>
+ <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE"><code>SSH2_AGENT_SIGN_RESPONSE</code></a></td>
+ <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES"><code>SSH2_AGENTC_REQUEST_IDENTITIES</code></a></td>
+ <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST"><code>SSH2_AGENTC_SIGN_REQUEST</code></a></td>
+ <td>Variable in module <a href="paramiko.agent-module.html"><code>paramiko.agent</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SSHException-class.html"><code>SSHException</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html#start"><code>start</code></a></td>
+ <td>Method in class <a href="threading.Thread-class.html"><code>threading.Thread</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#start_client"><code>start_client</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#start_server"><code>start_server</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPServer-class.html#start_subsystem"><code>start_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPServer-class.html"><code>paramiko.SFTPServer</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html#start_subsystem"><code>start_subsystem</code></a></td>
+ <td>Method in class <a href="paramiko.SubsystemHandler-class.html"><code>paramiko.SubsystemHandler</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#stat"><code>stat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPFile-class.html#stat"><code>stat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#stat"><code>stat</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#stop_thread"><code>stop_thread</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#symlink"><code>symlink</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#tb_strings"><code>tb_strings</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#tell"><code>tell</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="threading.Thread-class.html"><code>Thread</code></a></td>
+ <td>Class in module <code>threading</code></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html"><code>Transport</code></a></td>
+ <td>Class in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.transport-module.html"><code>transport</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td>
+ <td>Class in module <code>__builtin__</code></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html#unhexify"><code>unhexify</code></a></td>
+ <td>Function in module <a href="paramiko.util-module.html"><code>paramiko.util</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.Transport-class.html#use_compression"><code>use_compression</code></a></td>
+ <td>Method in class <a href="paramiko.Transport-class.html"><code>paramiko.Transport</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.util-module.html"><code>util</code></a></td>
+ <td>Module in package <a href="paramiko-module.html"><code>paramiko</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPClient-class.html#utime"><code>utime</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPClient-class.html"><code>paramiko.SFTPClient</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#verify_ssh_sig"><code>verify_ssh_sig</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#write"><code>write</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.SFTPHandle-class.html#write"><code>write</code></a></td>
+ <td>Method in class <a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.DSSKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td>
+ <td>Method in class <a href="paramiko.DSSKey-class.html"><code>paramiko.DSSKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.RSAKey-class.html#write_private_key_file"><code>write_private_key_file</code></a></td>
+ <td>Method in class <a href="paramiko.RSAKey-class.html"><code>paramiko.RSAKey</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#writelines"><code>writelines</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+ <tr><td width="15%"><a href="paramiko.BufferedFile-class.html#xreadlines"><code>xreadlines</code></a></td>
+ <td>Method in class <a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></td></tr>
+</table>
+<br />
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Index&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko-module.html b/docs/public/paramiko-module.html
new file mode 100644
index 0000000..15da9ab
--- /dev/null
+++ b/docs/public/paramiko-module.html
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Package&nbsp;paramiko
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF PACKAGE DESCRIPTION =========== -->
+<h2 class="package">Package paramiko</h2>
+
+<p><i>Paramiko</i> (a combination of the esperanto words for
+&quot;paranoid&quot; and &quot;friend&quot;) is a module for python 2.3
+or greater that implements the SSH2 protocol for secure (encrypted and
+authenticated) connections to remote machines. Unlike SSL (aka TLS), the
+SSH2 protocol does not require heirarchical certificates signed by a
+powerful central authority. You may know SSH2 as the protocol that
+replaced <code>telnet</code> and <code>rsh</code> for secure access to
+remote shells, but the protocol also includes the ability to open
+arbitrary channels to remote services across an encrypted tunnel. (This
+is how <code>sftp</code> works, for example.)</p>
+<p>To use this package, pass a socket (or socket-like object) to a <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>, and use <a
+href="paramiko.Transport-class.html#start_server"
+class="link"><code>start_server</code></a> or <a
+href="paramiko.Transport-class.html#start_client"
+class="link"><code>start_client</code></a> to negoatite with the remote
+host as either a server or client. As a client, you are responsible for
+authenticating using a password or private key, and checking the server's
+host key. <i>(Key signature and verification is done by paramiko, but you
+will need to provide private keys and check that the content of a public
+key matches what you expected to see.)</i> As a server, you are
+responsible for deciding which users, passwords, and keys to allow, and
+what kind of channels to allow.</p>
+<p>Once you have finished, either side may request flow-controlled <a
+href="paramiko.Channel-class.html" class="link"><code>Channel</code></a>s
+to the other side, which are python objects that act like sockets, but
+send and receive data over the encrypted session.</p>
+<p>Paramiko is written entirely in python (no C or platform-dependent
+code) and is released under the GNU Lesser General Public License
+(LGPL).</p>
+Website: <a
+href="http://www.lag.net/paramiko/">http://www.lag.net/paramiko/</a>
+<hr/>
+<p><b>Version:</b> 1.5.2 (rhydon)
+</p>
+
+<p><b>Author:</b> Robey Pointer
+</p>
+
+<p><b>Contact:</b> robey&#64;lag.net
+</p>
+
+<p><b>License:</b> GNU Lesser General Public License (LGPL)
+</p>
+
+
+<!-- =========== START OF SUBMODULES =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Submodules</th></tr>
+ <tr><td><ul>
+<li> <b><a href="paramiko.agent-module.html"><code>agent</code></a></b>: <i>SSH Agent interface for Unix clients.</i>
+<li> <b><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></b>: <i><a href="paramiko.DSSKey-class.html"
+class="link"><code>DSSKey</code></a></i>
+<li> <b><a href="paramiko.file-module.html"><code>file</code></a></b>: <i>BufferedFile.</i>
+<li> <b><a href="paramiko.message-module.html"><code>message</code></a></b>: <i>Implementation of an SSH2 &quot;message&quot;.</i>
+<li> <b><a href="paramiko.pkey-module.html"><code>pkey</code></a></b>: <i>Common API for all public keys.</i>
+<li> <b><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></b>: <i><a href="paramiko.RSAKey-class.html"
+class="link"><code>RSAKey</code></a></i>
+<li> <b><a href="paramiko.server-module.html"><code>server</code></a></b>: <i><a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> is an interface to override
+for server support.</i>
+<li> <b><a href="paramiko.sftp-module.html"><code>sftp</code></a></b>
+<li> <b><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></b>
+<li> <b><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></b>: <i>Client-mode SFTP support.</i>
+<li> <b><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></b>: <i><a href="paramiko.SFTPFile-class.html"
+class="link"><code>SFTPFile</code></a></i>
+<li> <b><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></b>: <i>Abstraction of an SFTP file handle (for server mode).</i>
+<li> <b><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></b>: <i>Server-mode SFTP support.</i>
+<li> <b><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></b>: <i><a href="../private/paramiko.SFTPServerInterface-class.html"
+class="link"><code>SFTPServerInterface</code></a> is an interface to
+override for SFTP server support.</i>
+<li> <b><a href="paramiko.transport-module.html"><code>transport</code></a></b>: <i><a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> handles the core SSH2
+protocol.</i>
+<li> <b><a href="paramiko.util-module.html"><code>util</code></a></b>: <i>Useful functions used by the rest of paramiko.</i>
+ </ul></td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.Agent-class.html"><code>Agent</code></a></b></td>
+ <td>Client interface for using private keys from an SSH agent running on
+the local machine.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.AgentKey-class.html"><code>AgentKey</code></a></b></td>
+ <td>Private key held in a local SSH agent.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a></b></td>
+ <td>Reusable base class to implement python-style file buffering around a
+simpler stream.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.Channel-class.html"><code>Channel</code></a></b></td>
+ <td>A secure tunnel across an SSH <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.DSSKey-class.html"><code>DSSKey</code></a></b></td>
+ <td>Representation of a DSS key which can be used to sign an verify SSH2
+data.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.Message-class.html"><code>Message</code></a></b></td>
+ <td>An SSH2 <i>Message</i> is a stream of bytes that encodes some
+combination of strings, integers, bools, and infinite-precision integers
+(known in python as <i>long</i>s).</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.RSAKey-class.html"><code>RSAKey</code></a></b></td>
+ <td>Representation of an RSA key which can be used to sign and verify SSH2
+data.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SecurityOptions-class.html"><code>SecurityOptions</code></a></b></td>
+ <td>Simple object containing the security preferences of an ssh
+transport.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTP-class.html"><code>SFTP</code></a></b></td>
+ <td>an alias for <a href="paramiko.SFTPClient-class.html"
+class="link"><code>SFTPClient</code></a> for backwards compatability</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPAttributes-class.html"><code>SFTPAttributes</code></a></b></td>
+ <td>Representation of the attributes of a file (or proxied file) for SFTP
+in client or server mode.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a></b></td>
+ <td>SFTP client object.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></b></td>
+ <td>Proxy object for a file on the remote server, in client mode SFTP.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPHandle-class.html"><code>SFTPHandle</code></a></b></td>
+ <td>Abstract object representing a handle to an open file (or folder) in
+an SFTP server implementation.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></b></td>
+ <td>Server-side SFTP subsystem support.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a></b></td>
+ <td>Handler for a subsytem in server mode.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.Transport-class.html"><code>Transport</code></a></b></td>
+ <td>An SSH Transport attaches to a stream (usually a socket), negotiates
+an encrypted session, authenticates, and then creates stream tunnels,
+called <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>s, across the session.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Exceptions</th></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a></b></td>
+ <td>Exception raised when an authentication type (like password) is used,
+but the server isn't allowing that type.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></b></td>
+ <td>Exception raised when a password is needed to unlock a private key
+file.</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SFTPError-class.html"><code>SFTPError</code></a></b></td>
+ <td>&nbsp;</td></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.SSHException-class.html"><code>SSHException</code></a></b></td>
+ <td>Exception raised by failures in SSH2 protocol negotiation or logic
+errors.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.Agent-class.html b/docs/public/paramiko.Agent-class.html
new file mode 100644
index 0000000..144efdf
--- /dev/null
+++ b/docs/public/paramiko.Agent-class.html
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Agent</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Agent
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.Agent-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.Agent-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class Agent</h2>
+
+<hr/>
+
+<p>Client interface for using private keys from an SSH agent running on
+the local machine. If an SSH agent is running, this class can be used to
+connect to it and retreive <a href="../private/paramiko.PKey-class.html"
+class="link"><code>PKey</code></a> objects which can be used when
+attempting to authenticate to remote SSH servers.</p>
+Because the SSH agent protocol uses environment variables and
+unix-domain sockets, this probably doesn't work on Windows. It does work
+on most posix platforms though (Linux and MacOS X, for example).
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Open a session with the local machine's SSH agent, if one is
+running.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the SSH agent connection.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> tuple of <a href="paramiko.AgentKey-class.html"
+ class="link"><code>AgentKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Agent-class.html#get_keys" class="summary-sig-name"><code>get_keys</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the list of keys available through the SSH agent, if any.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Open a session with the local machine's SSH agent, if one is
+ running. If no agent is running, initialization will succeed, but <a
+ href="paramiko.Agent-class.html#get_keys"
+ class="link"><code>get_keys</code></a> will return an empty tuple.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if an SSH agent is found, but speaks an incompatible
+ protocol
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close the SSH agent connection.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_keys"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_keys</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the list of keys available through the SSH agent, if any. If
+ no SSH agent was running (or it couldn't be contacted), an empty list
+ will be returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a list of keys available on the SSH agent
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=tuple of <a href="paramiko.AgentKey-class.html"
+ class="link"><code>AgentKey</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.AgentKey-class.html b/docs/public/paramiko.AgentKey-class.html
new file mode 100644
index 0000000..203e0f4
--- /dev/null
+++ b/docs/public/paramiko.AgentKey-class.html
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.AgentKey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;AgentKey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.AgentKey-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.AgentKey-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type AgentKey</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+
+ |
+ <b>AgentKey</b>
+</pre><br />
+
+<hr/>
+
+Private key held in a local SSH agent. This type of key can be used
+for authenticating to a remote server (signing). Most other key
+operations work as expected.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>agent</span>,
+ <span class=summary-sig-arg>blob</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string of an SSH <a href="paramiko.Message-class.html"
+class="link"><code>Message</code></a> made up of the public part(s) of
+this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the name of this private key implementation.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.AgentKey-class.html#sign_ssh_data" class="summary-sig-name"><code>sign_ssh_data</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>randpool</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Sign a blob of data with this private key, and return a <a
+href="paramiko.Message-class.html" class="link"><code>Message</code></a>
+representing an SSH signature message.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return a string of an SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> made up of the public part(s) of
+ this key. This string is suitable for passing to <a
+ href="../private/paramiko.PKey-class.html#__init__"
+ class="link"><code>__init__</code></a> to re-create the key object
+ later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string representation of an SSH key message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the name of this private key implementation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ name of this private key type, in SSH terminology (for
+ example, <code>&quot;ssh-rsa&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="sign_ssh_data"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">sign_ssh_data</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>randpool</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ Sign a blob of data with this private key, and return a <a
+ href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> representing an SSH signature
+ message.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>randpool</b></code> -
+ a secure random number generator.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<code>Crypto.Util.randpool.RandomPool</code>)</i>
+ <dd><code><b>data</b></code> -
+ the data to sign.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SSH signature message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#sign_ssh_data"><code>paramiko.PKey.sign_ssh_data</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.BadAuthenticationType-class.html b/docs/public/paramiko.BadAuthenticationType-class.html
new file mode 100644
index 0000000..27659ed
--- /dev/null
+++ b/docs/public/paramiko.BadAuthenticationType-class.html
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.BadAuthenticationType</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;BadAuthenticationType
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.BadAuthenticationType-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.BadAuthenticationType-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class BadAuthenticationType</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+
+ |
+ <b>BadAuthenticationType</b>
+</pre><br />
+
+<hr/>
+
+Exception raised when an authentication type (like password) is used,
+but the server isn't allowing that type. (It may only allow public-key,
+for example.)
+<hr/>
+
+<p><b>Since:</b> 1.1
+</p>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>explanation</span>,
+ <span class=summary-sig-arg>types</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Instance Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td>
+<td><b><a href="paramiko.BadAuthenticationType-class.html#allowed_types"><code>allowed_types</code></a></b>: list of allowed authentication types provided by the server (possible
+values are: <code>&quot;none&quot;</code>,
+<code>&quot;password&quot;</code>, and
+<code>&quot;publickey&quot;</code>).</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="allowed_types"></a>
+<h3>allowed_types</h3>
+list of allowed authentication types provided by the server (possible
+values are: <code>&quot;none&quot;</code>,
+<code>&quot;password&quot;</code>, and
+<code>&quot;publickey&quot;</code>).
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ list
+
+ </dd>
+<span title="[]"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+[] </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.BufferedFile-class.html b/docs/public/paramiko.BufferedFile-class.html
new file mode 100644
index 0000000..535c74f
--- /dev/null
+++ b/docs/public/paramiko.BufferedFile-class.html
@@ -0,0 +1,554 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.BufferedFile</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;BufferedFile
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.BufferedFile-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.BufferedFile-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type BufferedFile</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>BufferedFile</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTPFile-class.html"><code>SFTPFile</code></a></dd></dl>
+
+<hr/>
+
+Reusable base class to implement python-style file buffering around a
+simpler stream.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns an iterator that can be used to iterate over the lines in this
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Write out any data in the write buffer.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the next line from the input, or raises
+<code>StopIteration</code> when EOF is hit.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read at most <code>size</code> bytes from the file (less if we hit the
+end of the file first).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read one entire line from the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sizehint</span>)</span></code>
+<br />
+Read all remaining lines using <a
+href="paramiko.BufferedFile-class.html#readline"
+class="link"><code>readline</code></a> and return them as a list.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>whence</span>)</span></code>
+<br />
+Set the file's current position, like stdio's <code>fseek</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the file's current position.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write data to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sequence</span>)</span></code>
+<br />
+Write a sequence of strings to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Identical to <code>iter(f)</code>.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__iter__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__iter__</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns an iterator that can be used to iterate over the lines in
+ this file. This iterator happens to return the file itself, since a
+ file is its own iterator.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an interator.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=iterator)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>ValueError</b></code> -
+ if the file is closed.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close the file. Future read and write operations will fail.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="flush"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">flush</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Write out any data in the write buffer. This may do nothing if write
+ buffering is not turned on.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="next"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">next</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns the next line from the input, or raises
+ <code>StopIteration</code> when EOF is hit. Unlike python file objects,
+ it's okay to mix calls to <code>next</code> and <a
+ href="paramiko.BufferedFile-class.html#readline"
+ class="link"><code>readline</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a line read from the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>StopIteration</b></code> -
+ when the end of the file is reached.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">read</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Read at most <code>size</code> bytes from the file (less if we hit
+ the end of the file first). If the <code>size</code> argument is
+ negative or omitted, read all the remaining data in the file.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>size</b></code> -
+ maximum number of bytes to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data read from the file, or an empty string if EOF was
+ encountered immediately.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="readline"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">readline</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>size</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Read one entire line from the file. A trailing newline character is
+ kept in the string (but may be absent when a file ends with an
+ incomplete line). If the size argument is present and non-negative, it
+ is a maximum byte count (including the trailing newline) and an
+ incomplete line may be returned. An empty string is returned only when
+ EOF is encountered immediately.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>size</b></code> -
+ maximum length of returned string.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ next line of the file, or an empty string if the end of the
+ file has been reached.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> Unlike stdio's <code>fgets()</code>, the returned string contains null
+characters (<code>'\0'</code>) if they occurred in the input.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="readlines"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">readlines</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>sizehint</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Read all remaining lines using <a
+ href="paramiko.BufferedFile-class.html#readline"
+ class="link"><code>readline</code></a> and return them as a list. If
+ the optional <code>sizehint</code> argument is present, instead of
+ reading up to EOF, whole lines totalling approximately sizehint bytes
+ (possibly after rounding up to an internal buffer size) are read.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>sizehint</b></code> -
+ desired maximum number of bytes to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of lines read from the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="seek"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span>
+ </h3>
+ Set the file's current position, like stdio's <code>fseek</code>.
+ Not all file objects support seeking.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position to move to within the file, relative to
+ <code>whence</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>whence</b></code> -
+ type of movement: 0 = absolute; 1 = relative to the current
+ position; 2 = relative to the end of the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file doesn't support random access.
+ </dl>
+<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or
+<code>'a+'</code>), any seek operations will be undone at the next write
+(as the file position will move back to the end of the file).
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="tell"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">tell</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the file's current position. This may not be accurate or
+ useful if the underlying file doesn't support random access, or was
+ opened in append mode.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ file position (in bytes).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ Write data to the file. If write buffering is on
+ (<code>bufsize</code> was specified and non-zero), some or all of the
+ data may not actually be written yet. (Use <a
+ href="paramiko.BufferedFile-class.html#flush"
+ class="link"><code>flush</code></a> or <a
+ href="paramiko.BufferedFile-class.html#close"
+ class="link"><code>close</code></a> to force buffered data to be
+ written out.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>data</b></code> -
+ data to write.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="writelines"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">writelines</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>sequence</span>)</span>
+ </h3>
+ Write a sequence of strings to the file. The sequence can be any
+ iterable object producing strings, typically a list of strings. (The
+ name is intended to match <a
+ href="paramiko.BufferedFile-class.html#readlines"
+ class="link"><code>readlines</code></a>; <code>writelines</code> does
+ not add line separators.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>sequence</b></code> -
+ an iterable sequence of strings.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=sequence)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="xreadlines"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">xreadlines</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Identical to <code>iter(f)</code>. This is a deprecated file
+ interface that predates python iterator support.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an iterator.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=iterator)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SEEK_CUR"></a>
+<h3>SEEK_CUR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SEEK_END"></a>
+<h3>SEEK_END</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SEEK_SET"></a>
+<h3>SEEK_SET</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="0"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.Channel-class.html b/docs/public/paramiko.Channel-class.html
new file mode 100644
index 0000000..89bff06
--- /dev/null
+++ b/docs/public/paramiko.Channel-class.html
@@ -0,0 +1,1241 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Channel</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Channel
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.Channel-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.Channel-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Channel</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>Channel</b>
+</pre><br />
+
+<hr/>
+
+<p>A secure tunnel across an SSH <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>. A Channel is meant to behave
+like a socket, and has an API that should be indistinguishable from the
+python socket API.</p>
+Because SSH2 has a windowing kind of flow control, if you stop reading
+data from a Channel and its buffer fills up, the server will be unable to
+send you any more data until you read some of it. (This won't affect
+other channels on the same transport -- all channels on a single
+transport are flow-controlled independently.) Similarly, if the server
+isn't reading data you send, calls to <a
+href="paramiko.Channel-class.html#send"
+class="link"><code>send</code></a> may block, unless you set a timeout.
+This is exactly like a normal network socket, so it shouldn't be too
+surprising.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>chanid</span>)</span></code>
+<br />
+Create a new channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#exec_command" class="summary-sig-name"><code>exec_command</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>command</span>)</span></code>
+<br />
+Execute a command on the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#fileno" class="summary-sig-name"><code>fileno</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns an OS-level file descriptor which can be used for polling, but
+but <i>not</i> for reading or writing).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_id" class="summary-sig-name"><code>get_id</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the ID # for this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Get the name of this channel that was previously set by <a
+href="paramiko.Channel-class.html#set_name"
+class="link"><code>set_name</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_pty" class="summary-sig-name"><code>get_pty</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>term</span>,
+ <span class=summary-sig-arg>width</span>,
+ <span class=summary-sig-arg>height</span>)</span></code>
+<br />
+Request a pseudo-terminal from the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#get_transport" class="summary-sig-name"><code>get_transport</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> associated with this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> float
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#gettimeout" class="summary-sig-name"><code>gettimeout</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the timeout in seconds (as a float) associated with socket
+operations, or <code>None</code> if no timeout is set.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#invoke_shell" class="summary-sig-name"><code>invoke_shell</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Request an interactive shell session on this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#invoke_subsystem" class="summary-sig-name"><code>invoke_subsystem</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>subsystem</span>)</span></code>
+<br />
+Request a subsystem on the server (for example,
+<code>sftp</code>).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ChannelFile-class.html"
+ class="link"><code>ChannelFile</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#makefile" class="summary-sig-name"><code>makefile</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class="summary-sig-vararg">*params</span>)</span></code>
+<br />
+Return a file-like object associated with this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ChannelFile-class.html"
+ class="link"><code>ChannelFile</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#makefile_stderr" class="summary-sig-name"><code>makefile_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class="summary-sig-vararg">*params</span>)</span></code>
+<br />
+Return a file-like object associated with this channel's stderr
+stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv" class="summary-sig-name"><code>recv</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>nbytes</span>)</span></code>
+<br />
+Receive data from the channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_exit_status" class="summary-sig-name"><code>recv_exit_status</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the exit status from the process on the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_ready" class="summary-sig-name"><code>recv_ready</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns true if data is buffered and ready to be read from this
+channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_stderr" class="summary-sig-name"><code>recv_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>nbytes</span>)</span></code>
+<br />
+Receive data from the channel's stderr stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#recv_stderr_ready" class="summary-sig-name"><code>recv_stderr_ready</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns true if data is buffered and ready to be read from this
+channel's stderr stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#resize_pty" class="summary-sig-name"><code>resize_pty</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>width</span>,
+ <span class=summary-sig-arg>height</span>)</span></code>
+<br />
+Resize the pseudo-terminal.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send" class="summary-sig-name"><code>send</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Send data to the channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send_exit_status" class="summary-sig-name"><code>send_exit_status</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>status</span>)</span></code>
+<br />
+Send the exit status of an executed command to the client.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#send_stderr" class="summary-sig-name"><code>send_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Send data to the channel on the &quot;stderr&quot; stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#sendall" class="summary-sig-name"><code>sendall</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Send data to the channel, without allowing partial results.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#sendall_stderr" class="summary-sig-name"><code>sendall_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Send data to the channel's &quot;stderr&quot; stream, without allowing
+partial results.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#set_combine_stderr" class="summary-sig-name"><code>set_combine_stderr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>combine</span>)</span></code>
+<br />
+Set whether stderr should be combined into stdout on this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#set_name" class="summary-sig-name"><code>set_name</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+<br />
+Set a name for this channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#setblocking" class="summary-sig-name"><code>setblocking</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>blocking</span>)</span></code>
+<br />
+Set blocking or non-blocking mode of the channel: if
+<code>blocking</code> is 0, the channel is set to non-blocking mode;
+otherwise it's set to blocking mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#settimeout" class="summary-sig-name"><code>settimeout</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+<br />
+Set a timeout on blocking read/write operations.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown" class="summary-sig-name"><code>shutdown</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>how</span>)</span></code>
+<br />
+Shut down one or both halves of the connection.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown_read" class="summary-sig-name"><code>shutdown_read</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Shutdown the receiving side of this socket, closing the stream in the
+incoming direction.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Channel-class.html#shutdown_write" class="summary-sig-name"><code>shutdown_write</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Shutdown the sending side of this socket, closing the stream in the
+outgoing direction.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.Channel-class.html#MIN_PACKET_SIZE"><code>MIN_PACKET_SIZE</code></a></b> = <span title="1024">1024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>chanid</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new channel. The channel is not associated with any
+ particular session or <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> until the Transport attaches
+ it. Normally you would only call this method from the constructor of a
+ subclass of <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>chanid</b></code> -
+ the ID of this channel, as passed by an existing <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Return a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ str
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close the channel. All future read/write operations on the channel
+ will fail. The remote end will receive no more data (after queued data
+ is flushed). Channels are automatically closed when their <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> is closed or when they are
+ garbage collected.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="exec_command"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">exec_command</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>command</span>)</span>
+ </h3>
+ <p>Execute a command on the server. If the server allows it, the
+ channel will then be directly connected to the stdin, stdout, and
+ stderr of the command being executed.</p>
+ When the command finishes executing, the channel will be closed and
+ can't be reused. You must open a new channel if you wish to execute
+ another command.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>command</b></code> -
+ a shell command to execute.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="fileno"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">fileno</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ <p>Returns an OS-level file descriptor which can be used for polling,
+ but but <i>not</i> for reading or writing). This is primaily to allow
+ python's <code>select</code> module to work.</p>
+ The first time <code>fileno</code> is called on a channel, a pipe is
+ created to simulate real OS-level file descriptor (FD) behavior.
+ Because of this, two OS-level FDs are created, which will use up FDs
+ faster than normal. You won't notice this effect unless you open
+ hundreds or thousands of channels simultaneously, but it's still
+ notable.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an OS-level file descriptor
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Warning:</b> This method causes channel reads to be slightly less efficient.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_id"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_id</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the ID # for this channel. The channel ID is unique across a
+ <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> and usually a small number.
+ It's also the number passed to <a
+ href="../private/paramiko.ServerInterface-class.html#check_channel_request"
+ class="link"><code>ServerInterface.check_channel_request</code></a>
+ when determining whether to accept a channel request in server
+ mode.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the ID of this channel.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> ivysaur
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Get the name of this channel that was previously set by <a
+ href="paramiko.Channel-class.html#set_name"
+ class="link"><code>set_name</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the name of this channel.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_pty"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_pty</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>term</span>=<span class=sig-default>'vt100'</span>,
+ <span class=sig-arg>width</span>=<span class=sig-default>80</span>,
+ <span class=sig-arg>height</span>=<span class=sig-default>24</span>)</span>
+ </h3>
+ Request a pseudo-terminal from the server. This is usually used
+ right after creating a client channel, to ask the server to provide
+ some basic terminal semantics for a shell invoked with <a
+ href="paramiko.Channel-class.html#invoke_shell"
+ class="link"><code>invoke_shell</code></a>. It isn't necessary (or
+ desirable) to call this method if you're going to exectue a single
+ command with <a href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>term</b></code> -
+ the terminal type to emulate (for example,
+ <code>'vt100'</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>width</b></code> -
+ width (in characters) of the terminal screen
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>height</b></code> -
+ height (in characters) of the terminal screen
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_transport"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_transport</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> associated with this
+ channel.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> that was used to create
+ this channel.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="gettimeout"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">gettimeout</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns the timeout in seconds (as a float) associated with socket
+ operations, or <code>None</code> if no timeout is set. This reflects
+ the last call to <a href="paramiko.Channel-class.html#setblocking"
+ class="link"><code>setblocking</code></a> or <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ timeout in seconds, or <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=float)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="invoke_shell"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">invoke_shell</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ <p>Request an interactive shell session on this channel. If the server
+ allows it, the channel will then be directly connected to the stdin,
+ stdout, and stderr of the shell.</p>
+ <p>Normally you would call <a
+ href="paramiko.Channel-class.html#get_pty"
+ class="link"><code>get_pty</code></a> before this, in which case the
+ shell will operate through the pty, and the channel will be connected
+ to the stdin and stdout of the pty.</p>
+ When the shell exits, the channel will be closed and can't be
+ reused. You must open a new channel if you wish to open another
+ shell.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="invoke_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">invoke_subsystem</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>subsystem</span>)</span>
+ </h3>
+ <p>Request a subsystem on the server (for example, <code>sftp</code>).
+ If the server allows it, the channel will then be directly connected to
+ the requested subsystem.</p>
+ When the subsystem finishes, the channel will be closed and can't be
+ reused.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>subsystem</b></code> -
+ name of the subsystem being requested.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="makefile"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">makefile</span>(<span class=sig-arg>self</span>,
+ <span class="sig-vararg">*params</span>)</span>
+ </h3>
+ Return a file-like object associated with this channel. The optional
+ <code>mode</code> and <code>bufsize</code> arguments are interpreted
+ the same way as by the built-in <code>file()</code> function in
+ python.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ object which can be used for python file I/O.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ChannelFile-class.html"
+ class="link"><code>ChannelFile</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="makefile_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">makefile_stderr</span>(<span class=sig-arg>self</span>,
+ <span class="sig-vararg">*params</span>)</span>
+ </h3>
+ <p>Return a file-like object associated with this channel's stderr
+ stream. Only channels using <a
+ href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a> or <a
+ href="paramiko.Channel-class.html#invoke_shell"
+ class="link"><code>invoke_shell</code></a> without a pty will ever have
+ data on the stderr stream.</p>
+ The optional <code>mode</code> and <code>bufsize</code> arguments
+ are interpreted the same way as by the built-in <code>file()</code>
+ function in python. For a client, it only makes sense to open this file
+ for reading. For a server, it only makes sense to open this file for
+ writing.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ object which can be used for python file I/O.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ChannelFile-class.html"
+ class="link"><code>ChannelFile</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>nbytes</span>)</span>
+ </h3>
+ Receive data from the channel. The return value is a string
+ representing the data received. The maximum amount of data to be
+ received at once is specified by <code>nbytes</code>. If a string of
+ length zero is returned, the channel stream has closed.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>nbytes</b></code> -
+ maximum number of bytes to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if no data is ready before the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv_exit_status"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv_exit_status</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the exit status from the process on the server. This is
+ mostly useful for retrieving the reults of an <a
+ href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a>. If the command hasn't
+ finished yet, this method will wait until it does, or until the channel
+ is closed. If no exit status is provided by the server, -1 is
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the exit code of the process on the server.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv_ready"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv_ready</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns true if data is buffered and ready to be read from this
+ channel. A <code>False</code> result does not mean that the channel has
+ closed; it means you may need to wait before more data arrives.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if a <a
+ href="paramiko.Channel-class.html#recv"
+ class="link"><code>recv</code></a> call on this channel would
+ immediately return at least one byte; <code>False</code>
+ otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv_stderr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>nbytes</span>)</span>
+ </h3>
+ Receive data from the channel's stderr stream. Only channels using
+ <a href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a> or <a
+ href="paramiko.Channel-class.html#invoke_shell"
+ class="link"><code>invoke_shell</code></a> without a pty will ever have
+ data on the stderr stream. The return value is a string representing
+ the data received. The maximum amount of data to be received at once is
+ specified by <code>nbytes</code>. If a string of length zero is
+ returned, the channel stream has closed.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>nbytes</b></code> -
+ maximum number of bytes to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if no data is ready before the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="recv_stderr_ready"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">recv_stderr_ready</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns true if data is buffered and ready to be read from this
+ channel's stderr stream. Only channels using <a
+ href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a> or <a
+ href="paramiko.Channel-class.html#invoke_shell"
+ class="link"><code>invoke_shell</code></a> without a pty will ever have
+ data on the stderr stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if a <a
+ href="paramiko.Channel-class.html#recv_stderr"
+ class="link"><code>recv_stderr</code></a> call on this channel
+ would immediately return at least one byte; <code>False</code>
+ otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="resize_pty"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">resize_pty</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>width</span>=<span class=sig-default>80</span>,
+ <span class=sig-arg>height</span>=<span class=sig-default>24</span>)</span>
+ </h3>
+ Resize the pseudo-terminal. This can be used to change the width and
+ height of the terminal emulation created in a previous <a
+ href="paramiko.Channel-class.html#get_pty"
+ class="link"><code>get_pty</code></a> call.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>width</b></code> -
+ new width (in characters) of the terminal screen
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>height</b></code> -
+ new height (in characters) of the terminal screen
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the operation succeeded;
+ <code>False</code> if not.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="send"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Send data to the channel. Returns the number of bytes sent, or 0 if
+ the channel stream is closed. Applications are responsible for checking
+ that all data has been sent: if only some of the data was transmitted,
+ the application needs to attempt delivery of the remaining data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ data to send.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ number of bytes actually sent.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if no data could be sent before the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="send_exit_status"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send_exit_status</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>status</span>)</span>
+ </h3>
+ Send the exit status of an executed command to the client. (This
+ really only makes sense in server mode.) Many clients expect to get
+ some sort of status code back from an executed command after it
+ completes.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>status</b></code> -
+ the exit code of the process
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="send_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send_stderr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Send data to the channel on the &quot;stderr&quot; stream. This is
+ normally only used by servers to send output from shell commands --
+ clients won't use this. Returns the number of bytes sent, or 0 if the
+ channel stream is closed. Applications are responsible for checking
+ that all data has been sent: if only some of the data was transmitted,
+ the application needs to attempt delivery of the remaining data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ data to send.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ number of bytes actually sent.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if no data could be sent before the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="sendall"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">sendall</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Send data to the channel, without allowing partial results. Unlike
+ <a href="paramiko.Channel-class.html#send"
+ class="link"><code>send</code></a>, this method continues to send data
+ from the given string until either all data has been sent or an error
+ occurs. Nothing is returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ data to send.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if sending stalled for longer than the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ <dd><code><b>socket.error</b></code> -
+ if an error occured before the entire string was sent.
+ </dl>
+<p><b>Note:</b> If the channel is closed while only part of the data hase been sent,
+there is no way to determine how much data (if any) was sent. This is
+irritating, but identically follows python's API.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="sendall_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">sendall_stderr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Send data to the channel's &quot;stderr&quot; stream, without
+ allowing partial results. Unlike <a
+ href="paramiko.Channel-class.html#send_stderr"
+ class="link"><code>send_stderr</code></a>, this method continues to
+ send data from the given string until all data has been sent or an
+ error occurs. Nothing is returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ data to send to the client as &quot;stderr&quot; output.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>socket.timeout</b></code> -
+ if sending stalled for longer than the timeout set by <a
+ href="paramiko.Channel-class.html#settimeout"
+ class="link"><code>settimeout</code></a>.
+ <dd><code><b>socket.error</b></code> -
+ if an error occured before the entire string was sent.
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_combine_stderr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_combine_stderr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>combine</span>)</span>
+ </h3>
+ <p>Set whether stderr should be combined into stdout on this channel.
+ The default is <code>False</code>, but in some cases it may be
+ convenient to have both streams combined.</p>
+ <p>If this is <code>False</code>, and <a
+ href="paramiko.Channel-class.html#exec_command"
+ class="link"><code>exec_command</code></a> is called (or
+ <code>invoke_shell</code> with no pty), output to stderr will not show
+ up through the <a href="paramiko.Channel-class.html#recv"
+ class="link"><code>recv</code></a> and <a
+ href="paramiko.Channel-class.html#recv_ready"
+ class="link"><code>recv_ready</code></a> calls. You will have to use <a
+ href="paramiko.Channel-class.html#recv_stderr"
+ class="link"><code>recv_stderr</code></a> and <a
+ href="paramiko.Channel-class.html#recv_stderr_ready"
+ class="link"><code>recv_stderr_ready</code></a> to get stderr
+ output.</p>
+ If this is <code>True</code>, data will never show up via <a
+ href="paramiko.Channel-class.html#recv_stderr"
+ class="link"><code>recv_stderr</code></a> or <a
+ href="paramiko.Channel-class.html#recv_stderr_ready"
+ class="link"><code>recv_stderr_ready</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>combine</b></code> -
+ <code>True</code> if stderr output should be combined into
+ stdout on this channel.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ previous setting.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_name</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>)</span>
+ </h3>
+ Set a name for this channel. Currently it's only used to set the
+ name of the log level used for debugging. The name can be fetched with
+ the <a href="paramiko.Channel-class.html#get_name"
+ class="link"><code>get_name</code></a> method.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ new channel name.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="setblocking"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">setblocking</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>blocking</span>)</span>
+ </h3>
+ <p>Set blocking or non-blocking mode of the channel: if
+ <code>blocking</code> is 0, the channel is set to non-blocking mode;
+ otherwise it's set to blocking mode. Initially all channels are in
+ blocking mode.</p>
+ <p>In non-blocking mode, if a <a
+ href="paramiko.Channel-class.html#recv"
+ class="link"><code>recv</code></a> call doesn't find any data, or if a
+ <a href="paramiko.Channel-class.html#send"
+ class="link"><code>send</code></a> call can't immediately dispose of
+ the data, an error exception is raised. In blocking mode, the calls
+ block until they can proceed.</p>
+ <code>chan.setblocking(0)</code> is equivalent to
+ <code>chan.settimeout(0)</code>; <code>chan.setblocking(1)</code> is
+ equivalent to <code>chan.settimeout(None)</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>blocking</b></code> -
+ 0 to set non-blocking mode; non-0 to set blocking mode.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="settimeout"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">settimeout</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>timeout</span>)</span>
+ </h3>
+ <p>Set a timeout on blocking read/write operations. The
+ <code>timeout</code> argument can be a nonnegative float expressing
+ seconds, or <code>None</code>. If a float is given, subsequent channel
+ read/write operations will raise a timeout exception if the timeout
+ period value has elapsed before the operation has completed. Setting a
+ timeout of <code>None</code> disables timeouts on socket
+ operations.</p>
+ <code>chan.settimeout(0.0)</code> is equivalent to
+ <code>chan.setblocking(0)</code>; <code>chan.settimeout(None)</code> is
+ equivalent to <code>chan.setblocking(1)</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>timeout</b></code> -
+ seconds to wait for a pending read/write operation before
+ raising <code>socket.timeout</code>, or <code>None</code> for no
+ timeout.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=float)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="shutdown"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">shutdown</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>how</span>)</span>
+ </h3>
+ Shut down one or both halves of the connection. If <code>how</code>
+ is 0, further receives are disallowed. If <code>how</code> is 1,
+ further sends are disallowed. If <code>how</code> is 2, further sends
+ and receives are disallowed. This closes the stream in one or both
+ directions.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>how</b></code> -
+ 0 (stop receiving), 1 (stop sending), or 2 (stop receiving and
+ sending).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="shutdown_read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">shutdown_read</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Shutdown the receiving side of this socket, closing the stream in
+ the incoming direction. After this call, future reads on this channel
+ will fail instantly. This is a convenience method, equivalent to
+ <code>shutdown(0)</code>, for people who don't make it a habit to
+ memorize unix constants from the 1970s.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="shutdown_write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">shutdown_write</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Shutdown the sending side of this socket, closing the stream in the
+ outgoing direction. After this call, future writes on this channel will
+ fail instantly. This is a convenience method, equivalent to
+ <code>shutdown(1)</code>, for people who don't make it a habit to
+ memorize unix constants from the 1970s.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MIN_PACKET_SIZE"></a>
+<h3>MIN_PACKET_SIZE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1024"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.DSSKey-class.html b/docs/public/paramiko.DSSKey-class.html
new file mode 100644
index 0000000..f36e784
--- /dev/null
+++ b/docs/public/paramiko.DSSKey-class.html
@@ -0,0 +1,423 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.DSSKey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;DSSKey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.DSSKey-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.DSSKey-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type DSSKey</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+
+ |
+ <b>DSSKey</b>
+</pre><br />
+
+<hr/>
+
+Representation of a DSS key which can be used to sign an verify SSH2
+data.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Create a new instance of this public key type.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__hash__"></a><span class="summary-sig"><span class="summary-sig-name">__hash__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string of an SSH <a href="paramiko.Message-class.html"
+class="link"><code>Message</code></a> made up of the public part(s) of
+this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return <code>True</code> if this key has the private part necessary
+for signing data.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.DSSKey-class.html"
+ class="link"><code>DSSKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#generate" class="summary-sig-name"><code>generate</code></a>(<span class=summary-sig-arg>bits</span>,
+ <span class=summary-sig-arg>progress_func</span>)</span></code>
+<br />
+Generate a new private DSS key. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the number of significant bits in this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the name of this private key implementation.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="sign_ssh_data"></a><span class="summary-sig"><span class="summary-sig-name">sign_ssh_data</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>rpool</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Given a blob of data, and an SSH message representing a signature of
+that data, verify that it was signed with this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.DSSKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write private key contents into a file.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>msg</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>data</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>filename</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>vals</span>=<span class=sig-default>None</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new instance of this public key type. If <code>msg</code>
+ is given, the key's public part(s) will be filled in from the message.
+ If <code>data</code> is given, the key's public part(s) will be filled
+ in from the string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>msg</b></code> -
+ an optional SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> containing a public key of
+ this type.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ <dd><code><b>data</b></code> -
+ an optional string containing a public key of this type
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if a key cannot be created from the <code>data</code> or
+ <code>msg</code> given, or no key was passed in.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__init__"><code>paramiko.PKey.__init__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return a string of an SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> made up of the public part(s) of
+ this key. This string is suitable for passing to <a
+ href="../private/paramiko.PKey-class.html#__init__"
+ class="link"><code>__init__</code></a> to re-create the key object
+ later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string representation of an SSH key message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="can_sign"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return <code>True</code> if this key has the private part necessary
+ for signing data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if this is a private key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#can_sign"><code>paramiko.PKey.can_sign</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_bits"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the number of significant bits in this key. This is useful
+ for judging the relative security of a key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ bits in the key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_bits"><code>paramiko.PKey.get_bits</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the name of this private key implementation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ name of this private key type, in SSH terminology (for
+ example, <code>&quot;ssh-rsa&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="verify_ssh_sig"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>,
+ <span class=sig-arg>msg</span>)</span>
+ </h3>
+ Given a blob of data, and an SSH message representing a signature of
+ that data, verify that it was signed with this key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>data</b></code> -
+ the data that was signed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>msg</b></code> -
+ an SSH signature message
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the signature verifies correctly;
+ <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>paramiko.PKey.verify_ssh_sig</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write_private_key_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Write private key contents into a file. If the password is not
+ <code>None</code>, the key is encrypted before writing.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to write.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ an optional password to use to encrypt the key file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if there was an error writing the file.
+ <dd><code><b>SSHException</b></code> -
+ if the key is invalid.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>paramiko.PKey.write_private_key_file</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF STATIC METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Static Method Details</th></tr>
+</table>
+
+<a name="generate"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">generate</span>(<span class=sig-arg>bits</span>=<span class=sig-default>1024</span>,
+ <span class=sig-arg>progress_func</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Generate a new private DSS key. This factory function can be used to
+ generate a new host key or authentication key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>bits</b></code> -
+ number of bits the generated key should be.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>progress_func</b></code> -
+ an optional function to call at key points in key generation
+ (used by <code>pyCrypto.PublicKey</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=function)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ new private key
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.DSSKey-class.html"
+ class="link"><code>DSSKey</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.Message-class.html b/docs/public/paramiko.Message-class.html
new file mode 100644
index 0000000..7f097f8
--- /dev/null
+++ b/docs/public/paramiko.Message-class.html
@@ -0,0 +1,650 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Message</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Message
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.Message-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.Message-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Message</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>Message</b>
+</pre><br />
+
+<hr/>
+
+<p>An SSH2 <i>Message</i> is a stream of bytes that encodes some
+combination of strings, integers, bools, and infinite-precision integers
+(known in python as <i>long</i>s). This class builds or breaks down such
+a byte stream.</p>
+Normally you don't need to deal with anything this low-level, but it's
+exposed for people implementing custom extensions, or features that
+paramiko doesn't support yet.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>content</span>)</span></code>
+<br />
+Create a new SSH2 Message.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the byte stream content of this Message, as a string.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add" class="summary-sig-name"><code>add</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class="summary-sig-vararg">*seq</span>)</span></code>
+<br />
+Add a sequence of items to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_boolean" class="summary-sig-name"><code>add_boolean</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>b</span>)</span></code>
+<br />
+Add a boolean value to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_byte" class="summary-sig-name"><code>add_byte</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>b</span>)</span></code>
+<br />
+Write a single byte to the stream, without any formatting.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_bytes" class="summary-sig-name"><code>add_bytes</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>b</span>)</span></code>
+<br />
+Write bytes to the stream, without any formatting.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_int" class="summary-sig-name"><code>add_int</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+<br />
+Add an integer to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_int64" class="summary-sig-name"><code>add_int64</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+<br />
+Add a 64-bit int to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_list" class="summary-sig-name"><code>add_list</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>l</span>)</span></code>
+<br />
+Add a list of strings to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_mpint" class="summary-sig-name"><code>add_mpint</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>z</span>)</span></code>
+<br />
+Add a long int to the stream, encoded as an infinite-precision
+integer.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#add_string" class="summary-sig-name"><code>add_string</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>s</span>)</span></code>
+<br />
+Add a string to the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_boolean" class="summary-sig-name"><code>get_boolean</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a boolean from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_byte" class="summary-sig-name"><code>get_byte</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the next byte of the Message, without decomposing it.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_bytes" class="summary-sig-name"><code>get_bytes</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>n</span>)</span></code>
+<br />
+Return the next <code>n</code> bytes of the Message, without
+decomposing into an int, string, etc.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_int" class="summary-sig-name"><code>get_int</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch an int from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> long
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_int64" class="summary-sig-name"><code>get_int64</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a 64-bit int from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of strings
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_list" class="summary-sig-name"><code>get_list</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a list of strings from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> long
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_mpint" class="summary-sig-name"><code>get_mpint</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a long int (mpint) from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_remainder" class="summary-sig-name"><code>get_remainder</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the bytes of this Message that haven't already been parsed and
+returned.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_so_far" class="summary-sig-name"><code>get_so_far</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the bytes of this Message that have been parsed and
+returned.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#get_string" class="summary-sig-name"><code>get_string</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Fetch a string from the stream.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Message-class.html#rewind" class="summary-sig-name"><code>rewind</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Rewind the message to the beginning as if no items had been parsed out
+of it yet.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>content</span>=<span class=sig-default>None</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new SSH2 Message.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>content</b></code> -
+ the byte stream to use as the Message content (passed in only
+ when decomposing a Message).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Returns a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return the byte stream content of this Message, as a string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the contents of this Message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add</span>(<span class=sig-arg>self</span>,
+ <span class="sig-vararg">*seq</span>)</span>
+ </h3>
+ Add a sequence of items to the stream. The values are encoded based
+ on their type: str, int, bool, list, or long.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>seq</b></code> -
+ the sequence of items
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=sequence)</i>
+ </dd>
+ </dl>
+<p><b>Bug:</b> longs are encoded non-deterministically. Don't use this method.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_boolean"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_boolean</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>b</span>)</span>
+ </h3>
+ Add a boolean value to the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>b</b></code> -
+ boolean value to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_byte"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_byte</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>b</span>)</span>
+ </h3>
+ Write a single byte to the stream, without any formatting.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>b</b></code> -
+ byte to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_bytes"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_bytes</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>b</span>)</span>
+ </h3>
+ Write bytes to the stream, without any formatting.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>b</b></code> -
+ bytes to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_int"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_int</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>n</span>)</span>
+ </h3>
+ Add an integer to the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>n</b></code> -
+ integer to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_int64"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_int64</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>n</span>)</span>
+ </h3>
+ Add a 64-bit int to the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>n</b></code> -
+ long int to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=long)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_list"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_list</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>l</span>)</span>
+ </h3>
+ Add a list of strings to the stream. They are encoded identically to
+ a single string of values separated by commas. (Yes, really, that's how
+ SSH2 does it.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>l</b></code> -
+ list of strings to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list(str))</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_mpint"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_mpint</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>z</span>)</span>
+ </h3>
+ Add a long int to the stream, encoded as an infinite-precision
+ integer. This method only works on positive numbers.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>z</b></code> -
+ long int to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=long)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_string"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_string</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>s</span>)</span>
+ </h3>
+ Add a string to the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>s</b></code> -
+ string to add
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_boolean"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_boolean</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a boolean from the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> or <code>False</code> (from the
+ Message).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_byte"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_byte</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the next byte of the Message, without decomposing it. This is
+ equivalent to <a href="paramiko.Message-class.html#get_bytes"
+ class="link"><code>get_bytes(1)</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the next byte of the Message, or <code>'
+ aren't any bytes remaining.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_bytes"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_bytes</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>n</span>)</span>
+ </h3>
+ Return the next <code>n</code> bytes of the Message, without
+ decomposing into an int, string, etc. Just the raw bytes are
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a string of the next <code>n</code> bytes of the Message, or a
+ string of <code>n</code> zero bytes, if there aren't
+ <code>n</code> bytes remaining.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_int"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_int</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch an int from the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a 32-bit unsigned integer.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_int64"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_int64</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a 64-bit int from the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a 64-bit unsigned integer.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=long)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_list"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_list</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a list of strings from the stream. These are trivially encoded
+ as comma-separated values in a string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a list of strings.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list of strings)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_mpint"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_mpint</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a long int (mpint) from the stream.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an arbitrary-length integer.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=long)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_remainder"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_remainder</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the bytes of this Message that haven't already been parsed
+ and returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a string of the bytes not parsed yet.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_so_far"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_so_far</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns the bytes of this Message that have been parsed and
+ returned. The string passed into a Message's constructor can be
+ regenerated by concatenating <code>get_so_far</code> and <a
+ href="paramiko.Message-class.html#get_remainder"
+ class="link"><code>get_remainder</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a string of the bytes parsed so far.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_string"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_string</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Fetch a string from the stream. This could be a byte string and may
+ contain unprintable characters. (It's not unheard of for a string to
+ contain another byte-stream Message.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a string.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="rewind"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">rewind</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Rewind the message to the beginning as if no items had been parsed
+ out of it yet.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.PasswordRequiredException-class.html b/docs/public/paramiko.PasswordRequiredException-class.html
new file mode 100644
index 0000000..3d05e9c
--- /dev/null
+++ b/docs/public/paramiko.PasswordRequiredException-class.html
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.PasswordRequiredException</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;PasswordRequiredException
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.PasswordRequiredException-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.PasswordRequiredException-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class PasswordRequiredException</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <a href="paramiko.SSHException-class.html"><code>SSHException</code></a> --+
+ |
+ <b>PasswordRequiredException</b>
+</pre><br />
+
+<hr/>
+
+Exception raised when a password is needed to unlock a private key
+file.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.RSAKey-class.html b/docs/public/paramiko.RSAKey-class.html
new file mode 100644
index 0000000..168a684
--- /dev/null
+++ b/docs/public/paramiko.RSAKey-class.html
@@ -0,0 +1,423 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.RSAKey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;RSAKey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.RSAKey-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.RSAKey-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type RSAKey</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.PKey-class.html"><code>PKey</code></a> --+
+ |
+ <b>RSAKey</b>
+</pre><br />
+
+<hr/>
+
+Representation of an RSA key which can be used to sign and verify SSH2
+data.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>msg</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Create a new instance of this public key type.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__hash__"></a><span class="summary-sig"><span class="summary-sig-name">__hash__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a string of an SSH <a href="paramiko.Message-class.html"
+class="link"><code>Message</code></a> made up of the public part(s) of
+this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#can_sign" class="summary-sig-name"><code>can_sign</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return <code>True</code> if this key has the private part necessary
+for signing data.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.RSAKey-class.html"
+ class="link"><code>RSAKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#generate" class="summary-sig-name"><code>generate</code></a>(<span class=summary-sig-arg>bits</span>,
+ <span class=summary-sig-arg>progress_func</span>)</span></code>
+<br />
+Generate a new private RSA key. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#get_bits" class="summary-sig-name"><code>get_bits</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the number of significant bits in this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#get_name" class="summary-sig-name"><code>get_name</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the name of this private key implementation.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="sign_ssh_data"></a><span class="summary-sig"><span class="summary-sig-name">sign_ssh_data</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>rpool</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> boolean
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#verify_ssh_sig" class="summary-sig-name"><code>verify_ssh_sig</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>msg</span>)</span></code>
+<br />
+Given a blob of data, and an SSH message representing a signature of
+that data, verify that it was signed with this key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.RSAKey-class.html#write_private_key_file" class="summary-sig-name"><code>write_private_key_file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>password</span>)</span></code>
+<br />
+Write private key contents into a file.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>msg</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>data</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>filename</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>vals</span>=<span class=sig-default>None</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new instance of this public key type. If <code>msg</code>
+ is given, the key's public part(s) will be filled in from the message.
+ If <code>data</code> is given, the key's public part(s) will be filled
+ in from the string.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>msg</b></code> -
+ an optional SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> containing a public key of
+ this type.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ <dd><code><b>data</b></code> -
+ an optional string containing a public key of this type
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if a key cannot be created from the <code>data</code> or
+ <code>msg</code> given, or no key was passed in.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__init__"><code>paramiko.PKey.__init__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ Return a string of an SSH <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> made up of the public part(s) of
+ this key. This string is suitable for passing to <a
+ href="../private/paramiko.PKey-class.html#__init__"
+ class="link"><code>__init__</code></a> to re-create the key object
+ later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string representation of an SSH key message.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#__str__"><code>paramiko.PKey.__str__</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="can_sign"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">can_sign</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return <code>True</code> if this key has the private part necessary
+ for signing data.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if this is a private key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#can_sign"><code>paramiko.PKey.can_sign</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_bits"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_bits</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the number of significant bits in this key. This is useful
+ for judging the relative security of a key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ bits in the key.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_bits"><code>paramiko.PKey.get_bits</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_name"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_name</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the name of this private key implementation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ name of this private key type, in SSH terminology (for
+ example, <code>&quot;ssh-rsa&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#get_name"><code>paramiko.PKey.get_name</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="verify_ssh_sig"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">verify_ssh_sig</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>data</span>,
+ <span class=sig-arg>msg</span>)</span>
+ </h3>
+ Given a blob of data, and an SSH message representing a signature of
+ that data, verify that it was signed with this key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>data</b></code> -
+ the data that was signed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>msg</b></code> -
+ an SSH signature message
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if the signature verifies correctly;
+ <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=boolean)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#verify_ssh_sig"><code>paramiko.PKey.verify_ssh_sig</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write_private_key_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write_private_key_file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Write private key contents into a file. If the password is not
+ <code>None</code>, the key is encrypted before writing.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to write.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ an optional password to use to encrypt the key file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if there was an error writing the file.
+ <dd><code><b>SSHException</b></code> -
+ if the key is invalid.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.PKey-class.html#write_private_key_file"><code>paramiko.PKey.write_private_key_file</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF STATIC METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Static Method Details</th></tr>
+</table>
+
+<a name="generate"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">generate</span>(<span class=sig-arg>bits</span>,
+ <span class=sig-arg>progress_func</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Generate a new private RSA key. This factory function can be used to
+ generate a new host key or authentication key.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>bits</b></code> -
+ number of bits the generated key should be.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>progress_func</b></code> -
+ an optional function to call at key points in key generation
+ (used by <code>pyCrypto.PublicKey</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=function)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ new private key
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.RSAKey-class.html"
+ class="link"><code>RSAKey</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SFTP-class.html b/docs/public/paramiko.SFTP-class.html
new file mode 100644
index 0000000..72ebc70
--- /dev/null
+++ b/docs/public/paramiko.SFTP-class.html
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTP</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTP
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTP-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTP-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTP</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+
+ |
+ <a href="paramiko.SFTPClient-class.html"><code>SFTPClient</code></a> --+
+ |
+ <b>SFTP</b>
+</pre><br />
+
+<hr/>
+
+an alias for <a href="paramiko.SFTPClient-class.html"
+class="link"><code>SFTPClient</code></a> for backwards compatability
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from SFTPClient</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sock</span>)</span></code>
+<br />
+Create an SFTP client from an existing <a
+href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__del__" class="summary-sig-name"><code>__del__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chdir" class="summary-sig-name"><code>chdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Change the &quot;current directory&quot; of this SFTP session.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chmod" class="summary-sig-name"><code>chmod</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>mode</span>)</span></code>
+<br />
+Change the mode (permissions) of a file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chown" class="summary-sig-name"><code>chown</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>uid</span>,
+ <span class=summary-sig-arg>gid</span>)</span></code>
+<br />
+Change the owner (<code>uid</code>) and group (<code>gid</code>) of a
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the SFTP session and its underlying channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Open a file on the remote server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#from_transport" class="summary-sig-name"><code>from_transport</code></a>(<span class=summary-sig-arg>selfclass</span>,
+ <span class=summary-sig-arg>t</span>)</span></code>
+<br />
+Create an SFTP client channel from an open <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>. <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#get" class="summary-sig-name"><code>get</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>remotepath</span>,
+ <span class=summary-sig-arg>localpath</span>)</span></code>
+<br />
+Copy a remote file (<code>remotepath</code>) from the SFTP server to
+the local host as <code>localpath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#getcwd" class="summary-sig-name"><code>getcwd</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the &quot;current working directory&quot; for this SFTP
+session, as emulated by paramiko.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir" class="summary-sig-name"><code>listdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list containing the names of the entries in the given
+<code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir_attr" class="summary-sig-name"><code>listdir_attr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list containing <a href="paramiko.SFTPAttributes-class.html"
+class="link"><code>SFTPAttributes</code></a> objects corresponding to
+files in the given <code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Retrieve information about a file on the remote system, without
+following symbolic links (shortcuts).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>mode</span>)</span></code>
+<br />
+Create a folder (directory) named <code>path</code> with numeric mode
+<code>mode</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#normalize" class="summary-sig-name"><code>normalize</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the normalized path (on the server) of a given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Open a file on the remote server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#put" class="summary-sig-name"><code>put</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>localpath</span>,
+ <span class=summary-sig-arg>remotepath</span>)</span></code>
+<br />
+Copy a local file (<code>localpath</code>) to the SFTP server as
+<code>remotepath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the target of a symbolic link (shortcut).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the file at the given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>oldpath</span>,
+ <span class=summary-sig-arg>newpath</span>)</span></code>
+<br />
+Rename a file or folder from <code>oldpath</code> to
+<code>newpath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the folder named <code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Retrieve information about a file on the remote system.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>source</span>,
+ <span class=summary-sig-arg>dest</span>)</span></code>
+<br />
+Create a symbolic link (shortcut) of the <code>source</code> path at
+<code>destination</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>unlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the file at the given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#utime" class="summary-sig-name"><code>utime</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>times</span>)</span></code>
+<br />
+Set the access and modified times of the file specified by
+<code>path</code>.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SFTPAttributes-class.html b/docs/public/paramiko.SFTPAttributes-class.html
new file mode 100644
index 0000000..c3cc57c
--- /dev/null
+++ b/docs/public/paramiko.SFTPAttributes-class.html
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPAttributes</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPAttributes
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPAttributes-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPAttributes-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPAttributes</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>SFTPAttributes</b>
+</pre><br />
+
+<hr/>
+
+Representation of the attributes of a file (or proxied file) for SFTP
+in client or server mode. It attemps to mirror the object returned by
+<code>os.stat</code> as closely as possible, so it may have the following
+fields, with the same meanings as those returned by an
+<code>os.stat</code> object:
+<ul>
+ <li>
+ st_size
+ </li>
+ <li>
+ st_uid
+ </li>
+ <li>
+ st_gid
+ </li>
+ <li>
+ st_mode
+ </li>
+ <li>
+ st_atime
+ </li>
+ <li>
+ st_mtime
+ </li>
+</ul>
+Because SFTP allows flags to have other arbitrary named attributes,
+these are stored in a dict named <code>attr</code>. Occasionally, the
+filename is also stored, in <code>filename</code>.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Create a new (empty) SFTPAttributes object.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+create a unix-style long description of the file (like ls -l)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPAttributes-class.html#from_stat" class="summary-sig-name"><code>from_stat</code></a>(<span class=summary-sig-arg>cls</span>,
+ <span class=summary-sig-arg>obj</span>,
+ <span class=summary-sig-arg>filename</span>)</span></code>
+<br />
+Create an SFTPAttributes object from an existing <code>stat</code>
+object (an object returned by <code>os.stat</code>). <i>(Class method)</i>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_AMTIME"><code>FLAG_AMTIME</code></a></b> = <span title="8">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>long</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_EXTENDED"><code>FLAG_EXTENDED</code></a></b> = <span title="2147483648L"><code>2147483648L </code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_PERMISSIONS"><code>FLAG_PERMISSIONS</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_SIZE"><code>FLAG_SIZE</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPAttributes-class.html#FLAG_UIDGID"><code>FLAG_UIDGID</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new (empty) SFTPAttributes object. All fields will be
+ empty.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__str__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Informal representation operator)</i>
+ </h3>
+ create a unix-style long description of the file (like ls -l)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__str__"><code>__builtin__.object.__str__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Method Details</th></tr>
+</table>
+
+<a name="from_stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">from_stat</span>(<span class=sig-arg>cls</span>,
+ <span class=sig-arg>obj</span>,
+ <span class=sig-arg>filename</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Create an SFTPAttributes object from an existing <code>stat</code>
+ object (an object returned by <code>os.stat</code>).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>obj</b></code> -
+ an object returned by <code>os.stat</code> (or
+ equivalent).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=object)</i>
+ <dd><code><b>filename</b></code> -
+ the filename associated with this file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ new <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> object with the same
+ attribute fields.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_AMTIME"></a>
+<h3>FLAG_AMTIME</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_EXTENDED"></a>
+<h3>FLAG_EXTENDED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>long</code>
+
+ </dd>
+<span title="2147483648L"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2147483648L </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_PERMISSIONS"></a>
+<h3>FLAG_PERMISSIONS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_SIZE"></a>
+<h3>FLAG_SIZE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="FLAG_UIDGID"></a>
+<h3>FLAG_UIDGID</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SFTPClient-class.html b/docs/public/paramiko.SFTPClient-class.html
new file mode 100644
index 0000000..d691c5e
--- /dev/null
+++ b/docs/public/paramiko.SFTPClient-class.html
@@ -0,0 +1,1009 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPClient</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPClient
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPClient-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPClient-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPClient</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+
+ |
+ <b>SFTPClient</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTP-class.html"><code>SFTP</code></a></dd></dl>
+
+<hr/>
+
+SFTP client object. <code>SFTPClient</code> is used to open an sftp
+session across an open ssh <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> and do remote file
+operations.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sock</span>)</span></code>
+<br />
+Create an SFTP client from an existing <a
+href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chdir" class="summary-sig-name"><code>chdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Change the &quot;current directory&quot; of this SFTP session.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chmod" class="summary-sig-name"><code>chmod</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>mode</span>)</span></code>
+<br />
+Change the mode (permissions) of a file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#chown" class="summary-sig-name"><code>chown</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>uid</span>,
+ <span class=summary-sig-arg>gid</span>)</span></code>
+<br />
+Change the owner (<code>uid</code>) and group (<code>gid</code>) of a
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the SFTP session and its underlying channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>file</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Open a file on the remote server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#from_transport" class="summary-sig-name"><code>from_transport</code></a>(<span class=summary-sig-arg>selfclass</span>,
+ <span class=summary-sig-arg>t</span>)</span></code>
+<br />
+Create an SFTP client channel from an open <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>. <i>(Class method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#get" class="summary-sig-name"><code>get</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>remotepath</span>,
+ <span class=summary-sig-arg>localpath</span>)</span></code>
+<br />
+Copy a remote file (<code>remotepath</code>) from the SFTP server to
+the local host as <code>localpath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#getcwd" class="summary-sig-name"><code>getcwd</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the &quot;current working directory&quot; for this SFTP
+session, as emulated by paramiko.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir" class="summary-sig-name"><code>listdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list containing the names of the entries in the given
+<code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list of <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#listdir_attr" class="summary-sig-name"><code>listdir_attr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return a list containing <a href="paramiko.SFTPAttributes-class.html"
+class="link"><code>SFTPAttributes</code></a> objects corresponding to
+files in the given <code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#lstat" class="summary-sig-name"><code>lstat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Retrieve information about a file on the remote system, without
+following symbolic links (shortcuts).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#mkdir" class="summary-sig-name"><code>mkdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>mode</span>)</span></code>
+<br />
+Create a folder (directory) named <code>path</code> with numeric mode
+<code>mode</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#normalize" class="summary-sig-name"><code>normalize</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the normalized path (on the server) of a given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPFile
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#file" class="summary-sig-name"><code>open</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+<br />
+Open a file on the remote server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#put" class="summary-sig-name"><code>put</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>localpath</span>,
+ <span class=summary-sig-arg>remotepath</span>)</span></code>
+<br />
+Copy a local file (<code>localpath</code>) to the SFTP server as
+<code>remotepath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#readlink" class="summary-sig-name"><code>readlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Return the target of a symbolic link (shortcut).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>remove</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the file at the given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rename" class="summary-sig-name"><code>rename</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>oldpath</span>,
+ <span class=summary-sig-arg>newpath</span>)</span></code>
+<br />
+Rename a file or folder from <code>oldpath</code> to
+<code>newpath</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#rmdir" class="summary-sig-name"><code>rmdir</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the folder named <code>path</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Retrieve information about a file on the remote system.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#symlink" class="summary-sig-name"><code>symlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>source</span>,
+ <span class=summary-sig-arg>dest</span>)</span></code>
+<br />
+Create a symbolic link (shortcut) of the <code>source</code> path at
+<code>destination</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#remove" class="summary-sig-name"><code>unlink</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>)</span></code>
+<br />
+Remove the file at the given path.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPClient-class.html#utime" class="summary-sig-name"><code>utime</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>path</span>,
+ <span class=summary-sig-arg>times</span>)</span></code>
+<br />
+Set the access and modified times of the file specified by
+<code>path</code>.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>sock</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ <p>Create an SFTP client from an existing <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>. The channel should already have
+ requested the <code>&quot;sftp&quot;</code> subsystem.</p>
+ An alternate way to create an SFTP client context is by using <a
+ href="paramiko.SFTPClient-class.html#from_transport"
+ class="link"><code>from_transport</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>sock</b></code> -
+ an open <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> using the
+ <code>&quot;sftp&quot;</code> subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>paramiko.BaseSFTP.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="chdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Change the &quot;current directory&quot; of this SFTP session. Since
+ SFTP doesn't really have the concept of a current working directory,
+ this is emulated by paramiko. Once you use this method to set a working
+ directory, all operations on this SFTPClient object will be relative to
+ that path.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ new current working directory
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the requested path doesn't exist on the server
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="chmod"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chmod</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>mode</span>)</span>
+ </h3>
+ Change the mode (permissions) of a file. The permissions are
+ unix-style and identical to those used by python's
+ <code>os.chmod</code> function.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path of the file to change the permissions of.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>mode</b></code> -
+ new permissions.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="chown"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chown</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>uid</span>,
+ <span class=sig-arg>gid</span>)</span>
+ </h3>
+ Change the owner (<code>uid</code>) and group (<code>gid</code>) of
+ a file. As with python's <code>os.chown</code> function, you must pass
+ both arguments, so if you only want to change one, use <a
+ href="paramiko.SFTPClient-class.html#stat"
+ class="link"><code>stat</code></a> first to retrieve the current owner
+ and group.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path of the file to change the owner and group of.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>uid</b></code> -
+ new owner's uid
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>gid</b></code> -
+ new group id
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close the SFTP session and its underlying channel.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">file</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>,
+ <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span>
+ </h3>
+ <p>Open a file on the remote server. The arguments are the same as for
+ python's built-in <code>file</code> (aka <code>open</code>). A
+ file-like object is returned, which closely mimics the behavior of a
+ normal python file object.</p>
+ <p>The mode indicates how the file is to be opened: <code>'r'</code>
+ for reading, <code>'w'</code> for writing (truncating an existing
+ file), <code>'a'</code> for appending, <code>'r+'</code> for
+ reading/writing, <code>'w+'</code> for reading/writing (truncating an
+ existing file), <code>'a+'</code> for reading/appending. The python
+ <code>'b'</code> flag is ignored, since SSH treats all files as binary.
+ The <code>'U'</code> flag is supported in a compatible way.</p>
+ <p>Since 1.5.2, an <code>'x'</code> flag indicates that the operation
+ should only succeed if the file was created and did not previously
+ exist. This has no direct mapping to python's file flags, but is
+ commonly known as the <code>O_EXCL</code> flag in posix.</p>
+ The file will be buffered in standard python style by default, but
+ can be altered with the <code>bufsize</code> parameter. <code>0</code>
+ turns off buffering, <code>1</code> uses line buffering, and any number
+ greater than 1 (<code>&gt;1</code>) uses that specific buffer size.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to open.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>mode</b></code> -
+ mode (python-style) to open in.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>bufsize</b></code> -
+ desired buffering (-1 = default buffer size)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a file object representing the open file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPFile)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file could not be opened.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>remotepath</span>,
+ <span class=sig-arg>localpath</span>)</span>
+ </h3>
+ Copy a remote file (<code>remotepath</code>) from the SFTP server to
+ the local host as <code>localpath</code>. Any exception raised by
+ operations will be passed through. This method is primarily provided as
+ a convenience.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>remotepath</b></code> -
+ the remote file to copy
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>localpath</b></code> -
+ the destination path on the local host
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="getcwd"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">getcwd</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the &quot;current working directory&quot; for this SFTP
+ session, as emulated by paramiko. If no directory has been set with <a
+ href="paramiko.SFTPClient-class.html#chdir"
+ class="link"><code>chdir</code></a>, this method will return
+ <code>None</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ the current working directory on the server, or
+ <code>None</code>
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="listdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">listdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>=<span class=sig-default>'.'</span>)</span>
+ </h3>
+ Return a list containing the names of the entries in the given
+ <code>path</code>. The list is in arbitrary order. It does not include
+ the special entries <code>'.'</code> and <code>'..'</code> even if they
+ are present in the folder. This method is meant to mirror
+ <code>os.listdir</code> as closely as possible. For a list of full <a
+ href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> objects, see <a
+ href="paramiko.SFTPClient-class.html#listdir_attr"
+ class="link"><code>listdir_attr</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path to list (defaults to <code>'.'</code>)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of filenames
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list of str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="listdir_attr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">listdir_attr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>=<span class=sig-default>'.'</span>)</span>
+ </h3>
+ Return a list containing <a
+ href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> objects corresponding to
+ files in the given <code>path</code>. The list is in arbitrary order.
+ It does not include the special entries <code>'.'</code> and
+ <code>'..'</code> even if they are present in the folder.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path to list (defaults to <code>'.'</code>)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of attributes
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list of <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="lstat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">lstat</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Retrieve information about a file on the remote system, without
+ following symbolic links (shortcuts). This otherwise behaves exactly
+ the same as <a href="paramiko.SFTPClient-class.html#stat"
+ class="link"><code>stat</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the filename to stat.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an object containing attributes about the given file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPAttributes)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="mkdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">mkdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>mode</span>=<span class=sig-default>511</span>)</span>
+ </h3>
+ Create a folder (directory) named <code>path</code> with numeric
+ mode <code>mode</code>. The default mode is 0777 (octal). On some
+ systems, mode is ignored. Where it is used, the current umask value is
+ first masked out.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ name of the folder to create.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>mode</b></code> -
+ permissions (posix-style) for the newly-created folder.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="normalize"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">normalize</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Return the normalized path (on the server) of a given path. This can
+ be used to quickly resolve symbolic links or determine what the server
+ is considering to be the &quot;current folder&quot; (by passing
+ <code>'.'</code> as <code>path</code>).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path to be normalized.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ normalized form of the given path.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the path can't be resolved on the server
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>filename</span>,
+ <span class=sig-arg>mode</span>=<span class=sig-default>'r'</span>,
+ <span class=sig-arg>bufsize</span>=<span class=sig-default>-1</span>)</span>
+ </h3>
+ <p>Open a file on the remote server. The arguments are the same as for
+ python's built-in <code>file</code> (aka <code>open</code>). A
+ file-like object is returned, which closely mimics the behavior of a
+ normal python file object.</p>
+ <p>The mode indicates how the file is to be opened: <code>'r'</code>
+ for reading, <code>'w'</code> for writing (truncating an existing
+ file), <code>'a'</code> for appending, <code>'r+'</code> for
+ reading/writing, <code>'w+'</code> for reading/writing (truncating an
+ existing file), <code>'a+'</code> for reading/appending. The python
+ <code>'b'</code> flag is ignored, since SSH treats all files as binary.
+ The <code>'U'</code> flag is supported in a compatible way.</p>
+ <p>Since 1.5.2, an <code>'x'</code> flag indicates that the operation
+ should only succeed if the file was created and did not previously
+ exist. This has no direct mapping to python's file flags, but is
+ commonly known as the <code>O_EXCL</code> flag in posix.</p>
+ The file will be buffered in standard python style by default, but
+ can be altered with the <code>bufsize</code> parameter. <code>0</code>
+ turns off buffering, <code>1</code> uses line buffering, and any number
+ greater than 1 (<code>&gt;1</code>) uses that specific buffer size.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to open.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>mode</b></code> -
+ mode (python-style) to open in.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>bufsize</b></code> -
+ desired buffering (-1 = default buffer size)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a file object representing the open file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPFile)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file could not be opened.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="put"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">put</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>localpath</span>,
+ <span class=sig-arg>remotepath</span>)</span>
+ </h3>
+ <p>Copy a local file (<code>localpath</code>) to the SFTP server as
+ <code>remotepath</code>. Any exception raised by operations will be
+ passed through. This method is primarily provided as a convenience.</p>
+ The SFTP operations use pipelining for speed.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>localpath</b></code> -
+ the local file to copy
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>remotepath</b></code> -
+ the destination path on the SFTP server
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="readlink"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">readlink</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Return the target of a symbolic link (shortcut). You can use <a
+ href="paramiko.SFTPClient-class.html#symlink"
+ class="link"><code>symlink</code></a> to create these. The result may
+ be either an absolute or relative pathname.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path of the symbolic link file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ target path.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="remove"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">remove</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Remove the file at the given path.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path (absolute or relative) of the file to remove.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the path refers to a folder (directory). Use <a
+ href="paramiko.SFTPClient-class.html#rmdir"
+ class="link"><code>rmdir</code></a> to remove a folder.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="rename"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">rename</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>oldpath</span>,
+ <span class=sig-arg>newpath</span>)</span>
+ </h3>
+ Rename a file or folder from <code>oldpath</code> to
+ <code>newpath</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>oldpath</b></code> -
+ existing name of the file or folder.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>newpath</b></code> -
+ new name for the file or folder.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if <code>newpath</code> is a folder, or something else goes
+ wrong.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="rmdir"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">rmdir</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Remove the folder named <code>path</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ name of the folder to remove.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ <p>Retrieve information about a file on the remote system. The return
+ value is an object whose attributes correspond to the attributes of
+ python's <code>stat</code> structure as returned by
+ <code>os.stat</code>, except that it contains fewer fields. An SFTP
+ server may return as much or as little info as it wants, so the results
+ may vary from server to server.</p>
+ <p>Unlike a python <code>stat</code> object, the result may not be
+ accessed as a tuple. This is mostly due to the author's slack
+ factor.</p>
+ The fields supported are: <code>st_mode</code>,
+ <code>st_size</code>, <code>st_uid</code>, <code>st_gid</code>,
+ <code>st_atime</code>, and <code>st_mtime</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ the filename to stat.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an object containing attributes about the given file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPAttributes)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="symlink"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">symlink</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>source</span>,
+ <span class=sig-arg>dest</span>)</span>
+ </h3>
+ Create a symbolic link (shortcut) of the <code>source</code> path at
+ <code>destination</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>source</b></code> -
+ path of the original file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>dest</b></code> -
+ path of the newly created symlink.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="remove"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">unlink</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>)</span>
+ </h3>
+ Remove the file at the given path.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path (absolute or relative) of the file to remove.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the path refers to a folder (directory). Use <a
+ href="paramiko.SFTPClient-class.html#rmdir"
+ class="link"><code>rmdir</code></a> to remove a folder.
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="utime"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">utime</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>path</span>,
+ <span class=sig-arg>times</span>)</span>
+ </h3>
+ Set the access and modified times of the file specified by
+ <code>path</code>. If <code>times</code> is <code>None</code>, then the
+ file's access and modified times are set to the current time.
+ Otherwise, <code>times</code> must be a 2-tuple of numbers, of the form
+ <code>(atime, mtime)</code>, which is used to set the access and
+ modified times, respectively. This bizarre API is mimicked from python
+ for the sake of consistency -- I apologize.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>path</b></code> -
+ path of the file to modify.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>times</b></code> -
+ <code>None</code> or a tuple of (access time, modified time)
+ in standard internet epoch time (seconds since 01 January 1970
+ GMT).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=tuple of int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Method Details</th></tr>
+</table>
+
+<a name="from_transport"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">from_transport</span>(<span class=sig-arg>selfclass</span>,
+ <span class=sig-arg>t</span>)</span>
+ </h3>
+ Create an SFTP client channel from an open <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>t</b></code> -
+ an open <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> which is already
+ authenticated.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a> object, referring to an
+ sftp session (channel) across the transport.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SFTPError-class.html b/docs/public/paramiko.SFTPError-class.html
new file mode 100644
index 0000000..ed3a76d
--- /dev/null
+++ b/docs/public/paramiko.SFTPError-class.html
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPError</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPError
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPError-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPError-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class SFTPError</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <b>SFTPError</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SFTPFile-class.html b/docs/public/paramiko.SFTPFile-class.html
new file mode 100644
index 0000000..6425f07
--- /dev/null
+++ b/docs/public/paramiko.SFTPFile-class.html
@@ -0,0 +1,560 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPFile</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPFile
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPFile-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPFile-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPFile</h2>
+
+<pre class="base-tree">
+ <a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+<a href="paramiko.BufferedFile-class.html"><code>BufferedFile</code></a> --+
+ |
+ <b>SFTPFile</b>
+</pre><br />
+
+<hr/>
+
+Proxy object for a file on the remote server, in client mode SFTP.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sftp</span>,
+ <span class=summary-sig-arg>handle</span>,
+ <span class=summary-sig-arg>mode</span>,
+ <span class=summary-sig-arg>bufsize</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#check" class="summary-sig-name"><code>check</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>hash_algorithm</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>length</span>,
+ <span class=summary-sig-arg>block_size</span>)</span></code>
+<br />
+Ask the server for a hash of a section of this file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> float
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#gettimeout" class="summary-sig-name"><code>gettimeout</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the timeout in seconds (as a float) associated with the socket
+or ssh <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a> used for this file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#prefetch" class="summary-sig-name"><code>prefetch</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Pre-fetch the remaining contents of this file in anticipation of
+future <a href="paramiko.BufferedFile-class.html#read"
+class="link"><code>read</code></a> calls.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#seek" class="summary-sig-name"><code>seek</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>whence</span>)</span></code>
+<br />
+Set the file's current position, like stdio's <code>fseek</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#set_pipelined" class="summary-sig-name"><code>set_pipelined</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>pipelined</span>)</span></code>
+<br />
+Turn on/off the pipelining of write operations to this file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#setblocking" class="summary-sig-name"><code>setblocking</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>blocking</span>)</span></code>
+<br />
+Set blocking or non-blocking mode on the underiying socket or ssh <a
+href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#settimeout" class="summary-sig-name"><code>settimeout</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+<br />
+Set a timeout on read/write operations on the underlying socket or ssh
+<a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> SFTPAttributes
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPFile-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Retrieve information about this file from the remote system.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BufferedFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#__iter__" class="summary-sig-name"><code>__iter__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns an iterator that can be used to iterate over the lines in this
+file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#flush" class="summary-sig-name"><code>flush</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Write out any data in the write buffer.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#next" class="summary-sig-name"><code>next</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns the next line from the input, or raises
+<code>StopIteration</code> when EOF is hit.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read at most <code>size</code> bytes from the file (less if we hit the
+end of the file first).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readline" class="summary-sig-name"><code>readline</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>size</span>)</span></code>
+<br />
+Read one entire line from the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#readlines" class="summary-sig-name"><code>readlines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sizehint</span>)</span></code>
+<br />
+Read all remaining lines using <a
+href="paramiko.BufferedFile-class.html#readline"
+class="link"><code>readline</code></a> and return them as a list.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#tell" class="summary-sig-name"><code>tell</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the file's current position.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write data to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#writelines" class="summary-sig-name"><code>writelines</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sequence</span>)</span></code>
+<br />
+Write a sequence of strings to the file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> iterator
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.BufferedFile-class.html#xreadlines" class="summary-sig-name"><code>xreadlines</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Identical to <code>iter(f)</code>.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.SFTPFile-class.html#MAX_REQUEST_SIZE"><code>MAX_REQUEST_SIZE</code></a></b> = <span title="32768">32768&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from BufferedFile</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_CUR"><code>SEEK_CUR</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_END"><code>SEEK_END</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.BufferedFile-class.html#SEEK_SET"><code>SEEK_SET</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="check"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">check</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>hash_algorithm</span>,
+ <span class=sig-arg>offset</span>=<span class=sig-default>0</span>,
+ <span class=sig-arg>length</span>=<span class=sig-default>0</span>,
+ <span class=sig-arg>block_size</span>=<span class=sig-default>0</span>)</span>
+ </h3>
+ <p>Ask the server for a hash of a section of this file. This can be
+ used to verify a successful upload or download, or for various
+ rsync-like operations.</p>
+ <p>The file is hashed from <code>offset</code>, for <code>length</code>
+ bytes. If <code>length</code> is 0, the remainder of the file is
+ hashed. Thus, if both <code>offset</code> and <code>length</code> are
+ zero, the entire file is hashed.</p>
+ <p>Normally, <code>block_size</code> will be 0 (the default), and this
+ method will return a byte string representing the requested hash (for
+ example, a string of length 16 for MD5, or 20 for SHA-1). If a non-zero
+ <code>block_size</code> is given, each chunk of the file (from
+ <code>offset</code> to <code>offset + length</code>) of
+ <code>block_size</code> bytes is computed as a separate hash. The hash
+ results are all concatenated and returned as a single string.</p>
+ For example, <code>check('sha1', 0, 1024, 512)</code> will return a
+ string of length 40. The first 20 bytes will be the SHA-1 of the first
+ 512 bytes of the file, and the last 20 bytes will be the SHA-1 of the
+ next 512 bytes.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hash_algorithm</b></code> -
+ the name of the hash algorithm to use (normally
+ <code>&quot;sha1&quot;</code> or
+ <code>&quot;md5&quot;</code>)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>offset</b></code> -
+ offset into the file to begin hashing (0 means to start from
+ the beginning)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or long)</i>
+ <dd><code><b>length</b></code> -
+ number of bytes to hash (0 means continue to the end of the
+ file)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or long)</i>
+ <dd><code><b>block_size</b></code> -
+ number of bytes to hash per result (must not be less than 256;
+ 0 means to compute only one hash of the entire segment)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ string of bytes representing the hash of each block,
+ concatenated together
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the server doesn't support the &quot;check-file&quot;
+ extension, or possibly doesn't support the hash algorithm
+ requested
+ </dl>
+<p><b>Note:</b> Many (most?) servers don't support this extension yet.
+</p>
+
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>_async</span>=<span class=sig-default>False</span>)</span>
+ </h3>
+ Close the file. Future read and write operations will fail.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="paramiko.BufferedFile-class.html#close"><code>paramiko.BufferedFile.close</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="gettimeout"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">gettimeout</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Returns the timeout in seconds (as a float) associated with the
+ socket or ssh <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> used for this file.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ float
+ </dd>
+ </dl>
+<p><b>See Also:</b> <a href="paramiko.Channel-class.html#gettimeout"
+class="link"><code>Channel.gettimeout</code></a>
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="prefetch"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">prefetch</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Pre-fetch the remaining contents of this file in anticipation of
+ future <a href="paramiko.BufferedFile-class.html#read"
+ class="link"><code>read</code></a> calls. If reading the entire file,
+ pre-fetching can dramatically improve the download speed by avoiding
+ roundtrip latency. The file's contents are incrementally buffered in a
+ background thread.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.5.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="seek"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">seek</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>whence</span>=<span class=sig-default>0</span>)</span>
+ </h3>
+ Set the file's current position, like stdio's <code>fseek</code>.
+ Not all file objects support seeking.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position to move to within the file, relative to
+ <code>whence</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ <dd><code><b>whence</b></code> -
+ type of movement: 0 = absolute; 1 = relative to the current
+ position; 2 = relative to the end of the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>IOError</b></code> -
+ if the file doesn't support random access.
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="paramiko.BufferedFile-class.html#seek"><code>paramiko.BufferedFile.seek</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Note:</b> If a file is opened in append mode (<code>'a'</code> or
+<code>'a+'</code>), any seek operations will be undone at the next write
+(as the file position will move back to the end of the file).
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_pipelined"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_pipelined</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>pipelined</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ <p>Turn on/off the pipelining of write operations to this file. When
+ pipelining is on, paramiko won't wait for the server response after
+ each write operation. Instead, they're collected as they come in. At
+ the first non-write operation (including <a
+ href="paramiko.SFTPFile-class.html#close"
+ class="link"><code>close</code></a>), all remaining server responses
+ are collected. This means that if there was an error with one of your
+ later writes, an exception might be thrown from within <a
+ href="paramiko.SFTPFile-class.html#close"
+ class="link"><code>close</code></a> instead of <a
+ href="paramiko.BufferedFile-class.html#write"
+ class="link"><code>write</code></a>.</p>
+ By default, files are <i>not</i> pipelined.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>pipelined</b></code> -
+ <code>True</code> if pipelining should be turned on for this
+ file; <code>False</code> otherwise
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.5
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="setblocking"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">setblocking</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>blocking</span>)</span>
+ </h3>
+ Set blocking or non-blocking mode on the underiying socket or ssh <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>blocking</b></code> -
+ 0 to set non-blocking mode; non-0 to set blocking mode.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>See Also:</b> <a href="paramiko.Channel-class.html#setblocking"
+class="link"><code>Channel.setblocking</code></a>
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="settimeout"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">settimeout</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>timeout</span>)</span>
+ </h3>
+ Set a timeout on read/write operations on the underlying socket or
+ ssh <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>timeout</b></code> -
+ seconds to wait for a pending read/write operation before
+ raising <code>socket.timeout</code>, or <code>None</code> for no
+ timeout
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=float)</i>
+ </dd>
+ </dl>
+<p><b>See Also:</b> <a href="paramiko.Channel-class.html#settimeout"
+class="link"><code>Channel.settimeout</code></a>
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Retrieve information about this file from the remote system. This is
+ exactly like <a href="paramiko.SFTP-class.html#stat"
+ class="link"><code>SFTP.stat</code></a>, except that it operates on an
+ already-open file.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an object containing attributes about this file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=SFTPAttributes)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="MAX_REQUEST_SIZE"></a>
+<h3>MAX_REQUEST_SIZE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="32768"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+32768&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SFTPHandle-class.html b/docs/public/paramiko.SFTPHandle-class.html
new file mode 100644
index 0000000..662ee6a
--- /dev/null
+++ b/docs/public/paramiko.SFTPHandle-class.html
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPHandle</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPHandle
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPHandle-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPHandle-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPHandle</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>SFTPHandle</b>
+</pre><br />
+
+<hr/>
+
+<p>Abstract object representing a handle to an open file (or folder) in
+an SFTP server implementation. Each handle has a string representation
+used by the client to refer to the underlying file.</p>
+Server implementations can (and should) subclass SFTPHandle to
+implement features of a file handle, like <a
+href="paramiko.SFTPHandle-class.html#stat"
+class="link"><code>stat</code></a> or <a
+href="paramiko.SFTPHandle-class.html#chattr"
+class="link"><code>chattr</code></a>.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#chattr" class="summary-sig-name"><code>chattr</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>attr</span>)</span></code>
+<br />
+Change the attributes of this file.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+When a client closes a file, this method is called on the handle.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#read" class="summary-sig-name"><code>read</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>length</span>)</span></code>
+<br />
+Read up to <code>length</code> bytes from this file, starting at
+position <code>offset</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#stat" class="summary-sig-name"><code>stat</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return an <a href="paramiko.SFTPAttributes-class.html"
+class="link"><code>SFTPAttributes</code></a> object referring to this
+open file, or an error code.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPHandle-class.html#write" class="summary-sig-name"><code>write</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>offset</span>,
+ <span class=summary-sig-arg>data</span>)</span></code>
+<br />
+Write <code>data</code> into this file at position
+<code>offset</code>.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="chattr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">chattr</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>attr</span>)</span>
+ </h3>
+ Change the attributes of this file. The <code>attr</code> object
+ will contain only those fields provided by the client in its request,
+ so you should check for the presence of fields before using them.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>attr</b></code> -
+ the attributes to change on this file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ <p>When a client closes a file, this method is called on the handle.
+ Normally you would use this method to close the underlying OS level
+ file object(s).</p>
+ The default implementation checks for attributes on
+ <code>self</code> named <code>readfile</code> and/or
+ <code>writefile</code>, and if either or both are present, their
+ <code>close()</code> methods are called. This means that if you are
+ using the default implementations of <a
+ href="paramiko.SFTPHandle-class.html#read"
+ class="link"><code>read</code></a> and <a
+ href="paramiko.SFTPHandle-class.html#write"
+ class="link"><code>write</code></a>, this method's default
+ implementation should be fine also.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="read"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">read</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>length</span>)</span>
+ </h3>
+ <p>Read up to <code>length</code> bytes from this file, starting at
+ position <code>offset</code>. The offset may be a python long, since
+ SFTP allows it to be 64 bits.</p>
+ <p>If the end of the file has been reached, this method may return an
+ empty string to signify EOF, or it may also return <a
+ href="../private/paramiko-module.html#SFTP_EOF"
+ class="link"><code>SFTP_EOF</code></a>.</p>
+ The default implementation checks for an attribute on
+ <code>self</code> named <code>readfile</code>, and if present, performs
+ the read operation on the python file-like object found there. (This is
+ meant as a time saver for the common case where you are wrapping a
+ python file object.)
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position in the file to start reading from.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or long)</i>
+ <dd><code><b>length</b></code> -
+ number of bytes to attempt to read.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ data read from the file, or an SFTP error code.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="stat"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">stat</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return an <a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> object referring to this
+ open file, or an error code. This is equivalent to <a
+ href="../private/paramiko.SFTPServerInterface-class.html#stat"
+ class="link"><code>SFTPServerInterface.stat</code></a>, except it's
+ called on an open file instead of a path.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an attributes object for the given file, or an SFTP error code
+ (like <a
+ href="../private/paramiko-module.html#SFTP_PERMISSION_DENIED"
+ class="link"><code>SFTP_PERMISSION_DENIED</code></a>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a> <i>or error
+ code</i>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="write"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">write</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>offset</span>,
+ <span class=sig-arg>data</span>)</span>
+ </h3>
+ <p>Write <code>data</code> into this file at position
+ <code>offset</code>. Extending the file past its original end is
+ expected. Unlike python's normal <code>write()</code> methods, this
+ method cannot do a partial write: it must write all of
+ <code>data</code> or else return an error.</p>
+ The default implementation checks for an attribute on
+ <code>self</code> named <code>writefile</code>, and if present,
+ performs the write operation on the python file-like object found
+ there. The attribute is named differently from <code>readfile</code> to
+ make it easy to implement read-only (or write-only) files, but if both
+ attributes are present, they should refer to the same file.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>offset</b></code> -
+ position in the file to start reading from.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int or long)</i>
+ <dd><code><b>data</b></code> -
+ data to write into the file.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SFTP error code like <a
+ href="../private/paramiko-module.html#SFTP_OK"
+ class="link"><code>SFTP_OK</code></a>.
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SFTPServer-class.html b/docs/public/paramiko.SFTPServer-class.html
new file mode 100644
index 0000000..4d4e827
--- /dev/null
+++ b/docs/public/paramiko.SFTPServer-class.html
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SFTPServer</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SFTPServer
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SFTPServer-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SFTPServer-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SFTPServer</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+
+ |
+ <a href="threading.Thread-class.html"><code>Thread</code></a> --+
+ |
+ <a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a> --+
+ |
+ <a href="__builtin__.object-class.html"><code>object</code></a> --+ |
+ | |
+ <a href="../private/paramiko.BaseSFTP-class.html"><code>BaseSFTP</code></a> --+
+ |
+ <b>SFTPServer</b>
+</pre><br />
+
+<hr/>
+
+Server-side SFTP subsystem support. Since this is a <a
+href="paramiko.SubsystemHandler-class.html"
+class="link"><code>SubsystemHandler</code></a>, it can be (and is meant
+to be) set as the handler for <code>&quot;sftp&quot;</code> requests. Use
+<a href="paramiko.Transport-class.html#set_subsystem_handler"
+class="link"><code>Transport.set_subsystem_handler</code></a> to activate
+this class.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>server</span>,
+ <span class=summary-sig-arg>sftp_si</span>,
+ <span class="summary-sig-vararg">*largs</span>,
+ <span class="summary-sig-kwarg">**kwargs</span>)</span></code>
+<br />
+The constructor for SFTPServer is meant to be called from within the
+<a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> as a subsystem handler.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> int
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#convert_errno" class="summary-sig-name"><code>convert_errno</code></a>(<span class=summary-sig-arg>e</span>)</span></code>
+<br />
+Convert an errno value (as from an <code>OSError</code> or
+<code>IOError</code>) into a standard SFTP result code. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#finish_subsystem" class="summary-sig-name"><code>finish_subsystem</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Perform any cleanup at the end of a subsystem.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#set_file_attr" class="summary-sig-name"><code>set_file_attr</code></a>(<span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>attr</span>)</span></code>
+<br />
+Change a file's attributes on the local filesystem. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SFTPServer-class.html#start_subsystem" class="summary-sig-name"><code>start_subsystem</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>transport</span>,
+ <span class=summary-sig-arg>channel</span>)</span></code>
+<br />
+Process an ssh subsystem in server mode.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from SubsystemHandler</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#get_server" class="summary-sig-name"><code>get_server</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the <a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> object associated with this
+channel and subsystem.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#run" class="summary-sig-name"><code>run</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>daemonic</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>server</span>,
+ <span class=sig-arg>sftp_si</span>=<span class=sig-default>&lt;class&nbsp;'paramiko.SFTPServerInterface'&gt;</span>,
+ <span class="sig-vararg">*largs</span>,
+ <span class="sig-kwarg">**kwargs</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ The constructor for SFTPServer is meant to be called from within the
+ <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> as a subsystem handler.
+ <code>server</code> and any additional parameters or keyword parameters
+ are passed from the original call to <a
+ href="paramiko.Transport-class.html#set_subsystem_handler"
+ class="link"><code>Transport.set_subsystem_handler</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ channel passed from the <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>server</b></code> -
+ the server object associated with this channel and
+ subsystem
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>)</i>
+ <dd><code><b>sftp_si</b></code> -
+ a subclass of <a
+ href="../private/paramiko.SFTPServerInterface-class.html"
+ class="link"><code>SFTPServerInterface</code></a> to use for
+ handling individual requests.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=class)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="../private/paramiko.BaseSFTP-class.html#__init__"><code>paramiko.BaseSFTP.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="finish_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">finish_subsystem</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Perform any cleanup at the end of a subsystem. The default
+ implementation just closes the channel.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="paramiko.SubsystemHandler-class.html#finish_subsystem"><code>paramiko.SubsystemHandler.finish_subsystem</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="start_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">start_subsystem</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>transport</span>,
+ <span class=sig-arg>channel</span>)</span>
+ </h3>
+ <p>Process an ssh subsystem in server mode. This method is called on a
+ new object (and in a new thread) for each subsystem request. It is
+ assumed that all subsystem logic will take place here, and when the
+ subsystem is finished, this method will return. After this method
+ returns, the channel is closed.</p>
+ The combination of <code>transport</code> and <code>channel</code>
+ are unique; this handler corresponds to exactly one <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> on one <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>transport</b></code> -
+ the server-mode <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>)</i>
+ <dd><code><b>channel</b></code> -
+ the channel associated with this subsystem request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="paramiko.SubsystemHandler-class.html#start_subsystem"><code>paramiko.SubsystemHandler.start_subsystem</code></a> <i>(inherited documentation)</i>
+</dd>
+ </dl>
+<p><b>Note:</b> It is the responsibility of this method to exit if the underlying <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> is closed. This can be done by
+checking <a href="paramiko.Transport-class.html#is_active"
+class="link"><code>Transport.is_active</code></a> or noticing an EOF on
+the <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>. If this method loops forever
+without checking for this case, your python interpreter may refuse to
+exit because this thread will still be running.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF STATIC METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Static Method Details</th></tr>
+</table>
+
+<a name="convert_errno"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">convert_errno</span>(<span class=sig-arg>e</span>)</span>
+ </h3>
+ Convert an errno value (as from an <code>OSError</code> or
+ <code>IOError</code>) into a standard SFTP result code. This is a
+ convenience function for trapping exceptions in server code and
+ returning an appropriate result.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>e</b></code> -
+ an errno code, as from <code>OSError.errno</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an SFTP error code like <a
+ href="../private/paramiko-module.html#SFTP_NO_SUCH_FILE"
+ class="link"><code>SFTP_NO_SUCH_FILE</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_file_attr"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_file_attr</span>(<span class=sig-arg>filename</span>,
+ <span class=sig-arg>attr</span>)</span>
+ </h3>
+ <p>Change a file's attributes on the local filesystem. The contents of
+ <code>attr</code> are used to change the permissions, owner, group
+ ownership, and/or modification &amp; access time of the file, depending
+ on which attributes are present in <code>attr</code>.</p>
+ This is meant to be a handy helper function for translating SFTP
+ file requests into local file operations.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to alter (should usually be an absolute
+ path).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>attr</b></code> -
+ attributes to change.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPAttributes-class.html"
+ class="link"><code>SFTPAttributes</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SSHException-class.html b/docs/public/paramiko.SSHException-class.html
new file mode 100644
index 0000000..a628f2f
--- /dev/null
+++ b/docs/public/paramiko.SSHException-class.html
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SSHException</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SSHException
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SSHException-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SSHException-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Class SSHException</h2>
+
+<pre class="base-tree">
+<a href="exceptions.Exception-class.html"><code>Exception</code></a> --+
+ |
+ <b>SSHException</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.BadAuthenticationType-class.html"><code>BadAuthenticationType</code></a>,
+ <a href="paramiko.PasswordRequiredException-class.html"><code>PasswordRequiredException</code></a></dd></dl>
+
+<hr/>
+
+Exception raised by failures in SSH2 protocol negotiation or logic
+errors.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Exception</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="exceptions.Exception-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SecurityOptions-class.html b/docs/public/paramiko.SecurityOptions-class.html
new file mode 100644
index 0000000..a9ca4be
--- /dev/null
+++ b/docs/public/paramiko.SecurityOptions-class.html
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SecurityOptions</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SecurityOptions
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SecurityOptions-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SecurityOptions-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SecurityOptions</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>SecurityOptions</b>
+</pre><br />
+
+<hr/>
+
+<p>Simple object containing the security preferences of an ssh transport.
+These are tuples of acceptable ciphers, digests, key types, and key
+exchange algorithms, listed in order of preference.</p>
+Changing the contents and/or order of these fields affects the
+underlying <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> (but only if you change them
+before starting the session). If you try to add an algorithm that
+paramiko doesn't recognize, <code>ValueError</code> will be raised. If
+you try to assign something besides a tuple to one of the fields,
+<code>TypeError</code> will be raised.
+<hr/>
+
+<p><b>Since:</b> ivysaur
+</p>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>transport</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SecurityOptions-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns a string representation of this object, for debugging.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF PROPERTY SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Property Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#ciphers"><code>ciphers</code></a></b>: Symmetric encryption ciphers</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#compression"><code>compression</code></a></b>: Compression algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#digests"><code>digests</code></a></b>: Digest (one-way hash) algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#kex"><code>kex</code></a></b>: Key exchange algorithms</td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><b><a href="paramiko.SecurityOptions-class.html#key_types"><code>key_types</code></a></b>: Public-key algorithms</td></tr></table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Class Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
+<td><b><a href="paramiko.SecurityOptions-class.html#__slots__"><code>__slots__</code></a></b> = <span title="['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport']"><code>['ciphers',&nbsp;'digests',&nbsp;'key_types',&nbsp;'kex',&nbsp;'<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Returns a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ str
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF PROPERTY DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Property Details</th></tr>
+</table>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="ciphers"></a>
+<h3>ciphers</h3>
+Symmetric encryption ciphers
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ </dl>
+ </dd>
+</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="compression"></a>
+<h3>compression</h3>
+Compression algorithms
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ </dl>
+ </dd>
+</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="digests"></a>
+<h3>digests</h3>
+Digest (one-way hash) algorithms
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ </dl>
+ </dd>
+</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="kex"></a>
+<h3>kex</h3>
+Key exchange algorithms
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ </dl>
+ </dd>
+</dl></td></tr></table><table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+
+<a name="key_types"></a>
+<h3>key_types</h3>
+Public-key algorithms
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ </dl>
+ </dd>
+</dl></td></tr></table><br />
+
+
+<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Class Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="__slots__"></a>
+<h3>__slots__</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>list</code>
+
+ </dd>
+<span title="['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport']"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+['ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport'<span class="variable-linewrap">\</span>
+] </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.SubsystemHandler-class.html b/docs/public/paramiko.SubsystemHandler-class.html
new file mode 100644
index 0000000..05c7bdb
--- /dev/null
+++ b/docs/public/paramiko.SubsystemHandler-class.html
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.SubsystemHandler</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;SubsystemHandler
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.SubsystemHandler-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.SubsystemHandler-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type SubsystemHandler</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+
+ |
+ <a href="threading.Thread-class.html"><code>Thread</code></a> --+
+ |
+ <b>SubsystemHandler</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SFTPServer-class.html"><code>SFTPServer</code></a></dd></dl>
+
+<hr/>
+
+<p>Handler for a subsytem in server mode. If you create a subclass of
+this class and pass it to <a
+href="paramiko.Transport-class.html#set_subsystem_handler"
+class="link"><code>Transport.set_subsystem_handler</code></a>, an object
+of this class will be created for each request for this subsystem. Each
+new object will be executed within its own new thread by calling <a
+href="paramiko.SubsystemHandler-class.html#start_subsystem"
+class="link"><code>start_subsystem</code></a>. When that method
+completes, the channel is closed.</p>
+For example, if you made a subclass <code>MP3Handler</code> and
+registered it as the handler for subsystem <code>&quot;mp3&quot;</code>,
+then whenever a client has successfully authenticated and requests
+subsytem <code>&quot;mp3&quot;</code>, an object of class
+<code>MP3Handler</code> will be created, and <a
+href="paramiko.SubsystemHandler-class.html#start_subsystem"
+class="link"><code>start_subsystem</code></a> will be called on it from a
+new thread.
+<hr/>
+
+<p><b>Since:</b> ivysaur
+</p>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>channel</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>server</span>)</span></code>
+<br />
+Create a new handler for a channel.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#finish_subsystem" class="summary-sig-name"><code>finish_subsystem</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Perform any cleanup at the end of a subsystem.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#get_server" class="summary-sig-name"><code>get_server</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the <a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> object associated with this
+channel and subsystem.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.SubsystemHandler-class.html#start_subsystem" class="summary-sig-name"><code>start_subsystem</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>transport</span>,
+ <span class=summary-sig-arg>channel</span>)</span></code>
+<br />
+Process an ssh subsystem in server mode.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#run" class="summary-sig-name"><code>run</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>daemonic</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>channel</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>server</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new handler for a channel. This is used by <a
+ href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a> to start up a new handler
+ when a channel requests this subsystem. You don't need to override this
+ method, but if you do, be sure to pass the <code>channel</code> and
+ <code>name</code> parameters through to the original
+ <code>__init__</code> method here.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>channel</b></code> -
+ the channel associated with this subsystem request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>server</b></code> -
+ the server object for the session that started this
+ subsystem
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="threading.Thread-class.html#__init__"><code>threading.Thread.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="finish_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">finish_subsystem</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Perform any cleanup at the end of a subsystem. The default
+ implementation just closes the channel.
+ <dl><dt></dt><dd>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_server"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_server</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the <a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a> object associated with
+ this channel and subsystem.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>ServerInterface</code></a>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="start_subsystem"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">start_subsystem</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>transport</span>,
+ <span class=sig-arg>channel</span>)</span>
+ </h3>
+ <p>Process an ssh subsystem in server mode. This method is called on a
+ new object (and in a new thread) for each subsystem request. It is
+ assumed that all subsystem logic will take place here, and when the
+ subsystem is finished, this method will return. After this method
+ returns, the channel is closed.</p>
+ The combination of <code>transport</code> and <code>channel</code>
+ are unique; this handler corresponds to exactly one <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> on one <a
+ href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ name of the requested subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>transport</b></code> -
+ the server-mode <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>)</i>
+ <dd><code><b>channel</b></code> -
+ the channel associated with this subsystem request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> It is the responsibility of this method to exit if the underlying <a
+href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> is closed. This can be done by
+checking <a href="paramiko.Transport-class.html#is_active"
+class="link"><code>Transport.is_active</code></a> or noticing an EOF on
+the <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>. If this method loops forever
+without checking for this case, your python interpreter may refuse to
+exit because this thread will still be running.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.Transport-class.html b/docs/public/paramiko.Transport-class.html
new file mode 100644
index 0000000..562982b
--- /dev/null
+++ b/docs/public/paramiko.Transport-class.html
@@ -0,0 +1,1524 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.Transport</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Class&nbsp;Transport
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.Transport-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.Transport-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Transport</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+
+ |
+ <a href="threading.Thread-class.html"><code>Thread</code></a> --+
+ |
+ <b>Transport</b>
+</pre><br />
+
+<hr/>
+
+An SSH Transport attaches to a stream (usually a socket), negotiates
+an encrypted session, authenticates, and then creates stream tunnels,
+called <a href="paramiko.Channel-class.html"
+class="link"><code>Channel</code></a>s, across the session. Multiple
+channels can be multiplexed across a single session (and often are, in
+the case of port forwardings).
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>sock</span>)</span></code>
+<br />
+Create a new SSH session over an existing socket, or socket-like
+object.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__del__"></a><span class="summary-sig"><span class="summary-sig-name">__del__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Returns a string representation of this object, for debugging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#accept" class="summary-sig-name"><code>accept</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+<br />
+Return the next channel opened by the client over this transport, in
+server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#add_server_key" class="summary-sig-name"><code>add_server_key</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>key</span>)</span></code>
+<br />
+Add a host key to the list of keys used for server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_interactive" class="summary-sig-name"><code>auth_interactive</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>handler</span>,
+ <span class=summary-sig-arg>submethods</span>)</span></code>
+<br />
+Authenticate to the server interactively.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_none" class="summary-sig-name"><code>auth_none</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>)</span></code>
+<br />
+Try to authenticate to the server using no authentication at all.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_password" class="summary-sig-name"><code>auth_password</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>password</span>,
+ <span class=summary-sig-arg>event</span>,
+ <span class=summary-sig-arg>fallback</span>)</span></code>
+<br />
+Authenticate to the server using a password.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> list
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#auth_publickey" class="summary-sig-name"><code>auth_publickey</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>key</span>,
+ <span class=summary-sig-arg>event</span>)</span></code>
+<br />
+Authenticate to the server using a private key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#close" class="summary-sig-name"><code>close</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Close this session, and any open channels that are tied to it.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#connect" class="summary-sig-name"><code>connect</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>hostkey</span>,
+ <span class=summary-sig-arg>username</span>,
+ <span class=summary-sig-arg>password</span>,
+ <span class=summary-sig-arg>pkey</span>)</span></code>
+<br />
+Negotiate an SSH2 session, and optionally verify the server's host key
+and authenticate using a password or private key.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> Exception
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_exception" class="summary-sig-name"><code>get_exception</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return any exception that happened during the last server request.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_hexdump" class="summary-sig-name"><code>get_hexdump</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return <code>True</code> if the transport is currently logging hex
+dumps of protocol traffic.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> str
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_log_channel" class="summary-sig-name"><code>get_log_channel</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the channel name used for this transport's logging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_remote_server_key" class="summary-sig-name"><code>get_remote_server_key</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the host key of the server (in client mode).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SecurityOptions-class.html"
+ class="link"><code>SecurityOptions</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_security_options" class="summary-sig-name"><code>get_security_options</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return a <a href="paramiko.SecurityOptions-class.html"
+class="link"><code>SecurityOptions</code></a> object which can be used to
+tweak the encryption algorithms this transport will permit, and the order
+of preference for them.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_server_key" class="summary-sig-name"><code>get_server_key</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the active host key, in server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#get_username" class="summary-sig-name"><code>get_username</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return the username this connection is authenticated for.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#global_request" class="summary-sig-name"><code>global_request</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>kind</span>,
+ <span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>wait</span>)</span></code>
+<br />
+Make a global request to the remote host.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#is_active" class="summary-sig-name"><code>is_active</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return true if this session is active (open).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#is_authenticated" class="summary-sig-name"><code>is_authenticated</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Return true if this session is active and authenticated.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#load_server_moduli" class="summary-sig-name"><code>load_server_moduli</code></a>(<span class=summary-sig-arg>filename</span>)</span></code>
+<br />
+<i>(optional)</i> Load a file of prime moduli for use in doing
+group-exchange key negotiation in server mode. <i>(Static method)</i>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_channel" class="summary-sig-name"><code>open_channel</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>kind</span>,
+ <span class=summary-sig-arg>dest_addr</span>,
+ <span class=summary-sig-arg>src_addr</span>)</span></code>
+<br />
+Request a new channel to the server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_session" class="summary-sig-name"><code>open_session</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Request a new channel to the server, of type
+<code>&quot;session&quot;</code>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#open_sftp_client" class="summary-sig-name"><code>open_sftp_client</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Create an SFTP client channel from an open transport.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#renegotiate_keys" class="summary-sig-name"><code>renegotiate_keys</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+<br />
+Force this session to switch to new keys.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="run"></a><span class="summary-sig"><span class="summary-sig-name">run</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#send_ignore" class="summary-sig-name"><code>send_ignore</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>bytes</span>)</span></code>
+<br />
+Send a junk packet across the encrypted link.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_hexdump" class="summary-sig-name"><code>set_hexdump</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>hexdump</span>)</span></code>
+<br />
+Turn on/off logging a hex dump of protocol traffic at DEBUG level in
+the logs.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_keepalive" class="summary-sig-name"><code>set_keepalive</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>interval</span>)</span></code>
+<br />
+Turn on/off keepalive packets (default is off).</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_log_channel" class="summary-sig-name"><code>set_log_channel</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+<br />
+Set the channel for this transport's logging.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#set_subsystem_handler" class="summary-sig-name"><code>set_subsystem_handler</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>handler</span>,
+ <span class="summary-sig-vararg">*larg</span>,
+ <span class="summary-sig-kwarg">**kwarg</span>)</span></code>
+<br />
+Set the handler class for a subsystem in server mode.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#start_client" class="summary-sig-name"><code>start_client</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>event</span>)</span></code>
+<br />
+Negotiate a new SSH2 session as a client.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#start_server" class="summary-sig-name"><code>start_server</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>event</span>,
+ <span class=summary-sig-arg>server</span>)</span></code>
+<br />
+Negotiate a new SSH2 session as a server.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="stop_thread"></a><span class="summary-sig"><span class="summary-sig-name">stop_thread</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.Transport-class.html#use_compression" class="summary-sig-name"><code>use_compression</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>compress</span>)</span></code>
+<br />
+Turn on/off compression.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from Thread</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#getName" class="summary-sig-name"><code>getName</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isAlive" class="summary-sig-name"><code>isAlive</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#isDaemon" class="summary-sig-name"><code>isDaemon</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#join" class="summary-sig-name"><code>join</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setDaemon" class="summary-sig-name"><code>setDaemon</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>daemonic</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#setName" class="summary-sig-name"><code>setName</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="threading.Thread-class.html#start" class="summary-sig-name"><code>start</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF INSTANCE METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Instance Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>sock</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ <p>Create a new SSH session over an existing socket, or socket-like
+ object. This only creates the Transport object; it doesn't begin the
+ SSH session yet. Use <a href="paramiko.Transport-class.html#connect"
+ class="link"><code>connect</code></a> or <a
+ href="paramiko.Transport-class.html#start_client"
+ class="link"><code>start_client</code></a> to begin a client session,
+ or <a href="paramiko.Transport-class.html#start_server"
+ class="link"><code>start_server</code></a> to begin a server
+ session.</p>
+ If the object is not actually a socket, it must have the following
+ methods:
+ <ul>
+ <li>
+ <code>send(str)</code>: Writes from 1 to <code>len(str)</code>
+ bytes, and returns an int representing the number of bytes written.
+ Returns 0 or raises <code>EOFError</code> if the stream has been
+ closed.
+ </li>
+ <li>
+ <code>recv(int)</code>: Reads from 1 to <code>int</code> bytes
+ and returns them as a string. Returns 0 or raises
+ <code>EOFError</code> if the stream has been closed.
+ </li>
+ <li>
+ <code>close()</code>: Closes the socket.
+ </li>
+ <li>
+ <code>settimeout(n)</code>: Sets a (float) timeout on I/O
+ operations.
+ </li>
+ </ul>
+ For ease of use, you may also pass in an address (as a tuple) or a
+ host string as the <code>sock</code> argument. (A host string is a
+ hostname with an optional port (separated by
+ <code>&quot;:&quot;</code>) which will be converted into a tuple of
+ <code>(hostname, port)</code>.) A socket will be connected to this
+ address and used for communication. Exceptions from the
+ <code>socket</code> call may be thrown in this case.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>sock</b></code> -
+ a socket or socket-like object to create the session over.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=socket)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="threading.Thread-class.html#__init__"><code>threading.Thread.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="__repr__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>self</span>)</span>
+ <br /><i>(Representation operator)</i>
+ </h3>
+ Returns a string representation of this object, for debugging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ str
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="threading.Thread-class.html#__repr__"><code>threading.Thread.__repr__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="accept"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">accept</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>timeout</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Return the next channel opened by the client over this transport, in
+ server mode. If no channel is opened before the given timeout,
+ <code>None</code> is returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>timeout</b></code> -
+ seconds to wait for a channel, or <code>None</code> to wait
+ forever
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new Channel opened by the client
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_server_key"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_server_key</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>key</span>)</span>
+ </h3>
+ Add a host key to the list of keys used for server mode. When
+ behaving as a server, the host key is used to sign certain packets
+ during the SSH2 negotiation, so that the client can trust that we are
+ who we say we are. Because this is used for signing, the key must
+ contain private key info, not just the public half. Only one key of
+ each type (RSA or DSS) is kept.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>key</b></code> -
+ the host key to add, usually an <a
+ href="paramiko.RSAKey-class.html"
+ class="link"><code>RSAKey</code></a> or <a
+ href="paramiko.DSSKey-class.html"
+ class="link"><code>DSSKey</code></a>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="auth_interactive"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_interactive</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>handler</span>,
+ <span class=sig-arg>submethods</span>=<span class=sig-default>''</span>)</span>
+ </h3>
+ <p>Authenticate to the server interactively. A handler is used to
+ answer arbitrary questions from the server. On many servers, this is
+ just a dumb wrapper around PAM.</p>
+ <p>This method will block until the authentication succeeds or fails,
+ peroidically calling the handler asynchronously to get answers to
+ authentication questions. The handler may be called more than once if
+ the server continues to ask questions.</p>
+ <p>The handler is expected to be a callable that will handle calls of
+ the form: <code>handler(title, instructions, prompt_list)</code>. The
+ <code>title</code> is meant to be a dialog-window title, and the
+ <code>instructions</code> are user instructions (both are strings).
+ <code>prompt_list</code> will be a list of prompts, each prompt being a
+ tuple of <code>(str, bool)</code>. The string is the prompt and the
+ boolean indicates whether the user text should be echoed.</p>
+ <p>A sample call would thus be: <code>handler('title', 'instructions',
+ [('Password:', False)])</code>.</p>
+ <p>The handler should return a list or tuple of answers to the server's
+ questions.</p>
+ If the server requires multi-step authentication (which is very
+ rare), this method will return a list of auth types permissible for the
+ next step. Otherwise, in the normal case, an empty list is
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>handler</b></code> -
+ a handler for responding to server questions
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=callable)</i>
+ <dd><code><b>submethods</b></code> -
+ a string list of desired submethods (optional)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of auth types permissible for the next stage of
+ authentication (normally empty).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>BadAuthenticationType</b></code> -
+ if public-key authentication isn't allowed by the server for
+ this user
+ <dd><code><b>SSHException</b></code> -
+ if the authentication failed
+ </dl>
+<p><b>Since:</b> 1.5
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="auth_none"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_none</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>)</span>
+ </h3>
+ Try to authenticate to the server using no authentication at all.
+ This will almost always fail. It may be useful for determining the list
+ of authentication types supported by the server, by catching the <a
+ href="paramiko.BadAuthenticationType-class.html"
+ class="link"><code>BadAuthenticationType</code></a> exception
+ raised.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of auth types permissible for the next stage of
+ authentication (normally empty)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>BadAuthenticationType</b></code> -
+ if &quot;none&quot; authentication isn't allowed by the server
+ for this user
+ <dd><code><b>SSHException</b></code> -
+ if the authentication failed due to a network error
+ </dl>
+<p><b>Since:</b> 1.5
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="auth_password"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_password</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>password</span>,
+ <span class=sig-arg>event</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>fallback</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ <p>Authenticate to the server using a password. The username and
+ password are sent over an encrypted link.</p>
+ <p>If an <code>event</code> is passed in, this method will return
+ immediately, and the event will be triggered once authentication
+ succeeds or fails. On success, <a
+ href="paramiko.Transport-class.html#is_authenticated"
+ class="link"><code>is_authenticated</code></a> will return
+ <code>True</code>. On failure, you may use <a
+ href="paramiko.Transport-class.html#get_exception"
+ class="link"><code>get_exception</code></a> to get more detailed error
+ information.</p>
+ <p>Since 1.1, if no event is passed, this method will block until the
+ authentication succeeds or fails. On failure, an exception is raised.
+ Otherwise, the method simply returns.</p>
+ <p>Since 1.5, if no event is passed and <code>fallback</code> is
+ <code>True</code> (the default), if the server doesn't support plain
+ password authentication but does support so-called
+ &quot;keyboard-interactive&quot; mode, an attempt will be made to
+ authenticate using this interactive mode. If it fails, the normal
+ exception will be thrown as if the attempt had never been made. This is
+ useful for some recent Gentoo and Debian distributions, which turn off
+ plain password authentication in a misguided belief that interactive
+ authentication is &quot;more secure&quot;. (It's not.)</p>
+ If the server requires multi-step authentication (which is very
+ rare), this method will return a list of auth types permissible for the
+ next step. Otherwise, in the normal case, an empty list is
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>password</b></code> -
+ the password to authenticate with
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>event</b></code> -
+ an event to trigger when the authentication attempt is
+ complete (whether it was successful or not)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=threading.Event)</i>
+ <dd><code><b>fallback</b></code> -
+ <code>True</code> if an attempt at an automated
+ &quot;interactive&quot; password auth should be made if the
+ server doesn't support normal password auth
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of auth types permissible for the next stage of
+ authentication (normally empty)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>BadAuthenticationType</b></code> -
+ if password authentication isn't allowed by the server for
+ this user (and no event was passed in)
+ <dd><code><b>SSHException</b></code> -
+ if the authentication failed (and no event was passed in)
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="auth_publickey"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">auth_publickey</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>username</span>,
+ <span class=sig-arg>key</span>,
+ <span class=sig-arg>event</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p>Authenticate to the server using a private key. The key is used to
+ sign data from the server, so it must include the private part.</p>
+ <p>If an <code>event</code> is passed in, this method will return
+ immediately, and the event will be triggered once authentication
+ succeeds or fails. On success, <a
+ href="paramiko.Transport-class.html#is_authenticated"
+ class="link"><code>is_authenticated</code></a> will return
+ <code>True</code>. On failure, you may use <a
+ href="paramiko.Transport-class.html#get_exception"
+ class="link"><code>get_exception</code></a> to get more detailed error
+ information.</p>
+ <p>Since 1.1, if no event is passed, this method will block until the
+ authentication succeeds or fails. On failure, an exception is raised.
+ Otherwise, the method simply returns.</p>
+ If the server requires multi-step authentication (which is very
+ rare), this method will return a list of auth types permissible for the
+ next step. Otherwise, in the normal case, an empty list is
+ returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>key</b></code> -
+ the private key to authenticate with
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ <dd><code><b>event</b></code> -
+ an event to trigger when the authentication attempt is
+ complete (whether it was successful or not)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=threading.Event)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ list of auth types permissible for the next stage of
+ authentication (normally empty).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=list)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>BadAuthenticationType</b></code> -
+ if public-key authentication isn't allowed by the server for
+ this user (and no event was passed in).
+ <dd><code><b>SSHException</b></code> -
+ if the authentication failed (and no event was passed in).
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="close"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">close</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Close this session, and any open channels that are tied to it.
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="connect"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">connect</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>hostkey</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>username</span>=<span class=sig-default>''</span>,
+ <span class=sig-arg>password</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>pkey</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p>Negotiate an SSH2 session, and optionally verify the server's host
+ key and authenticate using a password or private key. This is a
+ shortcut for <a href="paramiko.Transport-class.html#start_client"
+ class="link"><code>start_client</code></a>, <a
+ href="paramiko.Transport-class.html#get_remote_server_key"
+ class="link"><code>get_remote_server_key</code></a>, and <a
+ href="paramiko.Transport-class.html#auth_password"
+ class="link"><code>Transport.auth_password</code></a> or <a
+ href="paramiko.Transport-class.html#auth_publickey"
+ class="link"><code>Transport.auth_publickey</code></a>. Use those
+ methods if you want more control.</p>
+ You can use this method immediately after creating a Transport to
+ negotiate encryption with a server. If it fails, an exception will be
+ thrown. On success, the method will return cleanly, and an encrypted
+ session exists. You may immediately call <a
+ href="paramiko.Transport-class.html#open_channel"
+ class="link"><code>open_channel</code></a> or <a
+ href="paramiko.Transport-class.html#open_session"
+ class="link"><code>open_session</code></a> to get a <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> object, which is used for data
+ transfer.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hostkey</b></code> -
+ the host key expected from the server, or <code>None</code> if
+ you don't want to do host key verification.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ <dd><code><b>username</b></code> -
+ the username to authenticate as.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>password</b></code> -
+ a password to use for authentication, if you want to use
+ password authentication; otherwise <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>pkey</b></code> -
+ a private key to use for authentication, if you want to use
+ private key authentication; otherwise <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if the SSH2 negotiation fails, the host key supplied by the
+ server is incorrect, or authentication fails.
+ </dl>
+<p><b>Note:</b> If you fail to supply a password or private key, this method may
+succeed, but a subsequent <a
+href="paramiko.Transport-class.html#open_channel"
+class="link"><code>open_channel</code></a> or <a
+href="paramiko.Transport-class.html#open_session"
+class="link"><code>open_session</code></a> call may fail because you
+haven't authenticated yet.
+</p>
+
+<p><b>Since:</b> doduo
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_exception"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_exception</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return any exception that happened during the last server request.
+ This can be used to fetch more specific error information after using
+ calls like <a href="paramiko.Transport-class.html#start_client"
+ class="link"><code>start_client</code></a>. The exception (if any) is
+ cleared after this call.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an exception, or <code>None</code> if there is no stored
+ exception.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=Exception)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_hexdump"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_hexdump</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return <code>True</code> if the transport is currently logging hex
+ dumps of protocol traffic.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ <code>True</code> if hex dumps are being logged
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.4
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_log_channel"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_log_channel</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the channel name used for this transport's logging.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ channel name.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_remote_server_key"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_remote_server_key</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the host key of the server (in client mode).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ public key of the remote server.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if no session is currently active.
+ </dl>
+<p><b>Note:</b> Previously this call returned a tuple of (key type, key string). You
+can get the same effect by calling <a
+href="../private/paramiko.PKey-class.html#get_name"
+class="link"><code>PKey.get_name</code></a> for the key type, and
+<code>str(key)</code> for the key string.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_security_options"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_security_options</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return a <a href="paramiko.SecurityOptions-class.html"
+ class="link"><code>SecurityOptions</code></a> object which can be used
+ to tweak the encryption algorithms this transport will permit, and the
+ order of preference for them.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ an object that can be used to change the preferred algorithms
+ for encryption, digest (hash), public key, and key exchange.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SecurityOptions-class.html"
+ class="link"><code>SecurityOptions</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> ivysaur
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_server_key"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_server_key</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the active host key, in server mode. After negotiating with
+ the client, this method will return the negotiated host key. If only
+ one type of host key was set with <a
+ href="paramiko.Transport-class.html#add_server_key"
+ class="link"><code>add_server_key</code></a>, that's the only key that
+ will ever be returned. But in cases where you have set more than one
+ type of host key (for example, an RSA key and a DSS key), the key type
+ will be negotiated by the client, and this method will return the key
+ of the type agreed on. If the host key has not been negotiated yet,
+ <code>None</code> is returned. In client mode, the behavior is
+ undefined.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ host key of the type negotiated by the client, or
+ <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="get_username"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">get_username</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return the username this connection is authenticated for. If the
+ session is not authenticated (or authentication failed), this method
+ returns <code>None</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ username that was authenticated, or <code>None</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="global_request"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">global_request</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>kind</span>,
+ <span class=sig-arg>data</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>wait</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ Make a global request to the remote host. These are normally
+ extensions to the SSH2 protocol.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>kind</b></code> -
+ name of the request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>data</b></code> -
+ an optional tuple containing additional data to attach to the
+ request.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=tuple)</i>
+ <dd><code><b>wait</b></code> -
+ <code>True</code> if this method should not return until a
+ response is received; <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a <a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> containing possible
+ additional data if the request was successful (or an empty <a
+ href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a> if <code>wait</code> was
+ <code>False</code>); <code>None</code> if the request was
+ denied.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Message-class.html"
+ class="link"><code>Message</code></a>)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="is_active"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">is_active</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return true if this session is active (open).
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ True if the session is still active (open); False if the
+ session is closed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="is_authenticated"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">is_authenticated</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Return true if this session is active and authenticated.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ True if the session is still open and has been authenticated
+ successfully; False if authentication failed and/or the session
+ is closed.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="open_channel"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open_channel</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>kind</span>,
+ <span class=sig-arg>dest_addr</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>src_addr</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Request a new channel to the server. <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>s are socket-like objects used for
+ the actual transfer of data across the session. You may only request a
+ channel after negotiating encryption (using <a
+ href="paramiko.Transport-class.html#connect"
+ class="link"><code>connect</code></a> or <a
+ href="paramiko.Transport-class.html#start_client"
+ class="link"><code>start_client</code></a>) and authenticating.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>kind</b></code> -
+ the kind of channel requested (usually
+ <code>&quot;session&quot;</code>,
+ <code>&quot;forwarded-tcpip&quot;</code> or
+ <code>&quot;direct-tcpip&quot;</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>dest_addr</b></code> -
+ the destination address of this port forwarding, if
+ <code>kind</code> is <code>&quot;forwarded-tcpip&quot;</code> or
+ <code>&quot;direct-tcpip&quot;</code> (ignored for other channel
+ types).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=(str, int))</i>
+ <dd><code><b>src_addr</b></code> -
+ the source address of this port forwarding, if
+ <code>kind</code> is <code>&quot;forwarded-tcpip&quot;</code> or
+ <code>&quot;direct-tcpip&quot;</code>.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=(str, int))</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> on success, or
+ <code>None</code> if the request is rejected or the session ends
+ prematurely.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="open_session"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open_session</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Request a new channel to the server, of type
+ <code>&quot;session&quot;</code>. This is just an alias for
+ <code>open_channel('session')</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a> on success, or
+ <code>None</code> if the request is rejected or the session ends
+ prematurely.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="open_sftp_client"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">open_sftp_client</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Create an SFTP client channel from an open transport. On success, an
+ SFTP session will be opened with the remote host, and a new SFTPClient
+ object will be returned.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ a new <a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a> object, referring to an
+ sftp session (channel) across this transport
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="paramiko.SFTPClient-class.html"
+ class="link"><code>SFTPClient</code></a>)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="renegotiate_keys"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">renegotiate_keys</span>(<span class=sig-arg>self</span>)</span>
+ </h3>
+ Force this session to switch to new keys. Normally this is done
+ automatically after the session hits a certain number of packets or
+ bytes sent or received, but this method gives you the option of forcing
+ new keys whenever you want. Negotiating new keys causes a pause in
+ traffic both ways as the two sides swap keys and do computations. This
+ method returns when the session has switched to new keys, or the
+ session has died mid-negotiation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ True if the renegotiation was successful, and the link is
+ using new keys; False if the session dropped during
+ renegotiation.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="send_ignore"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">send_ignore</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>bytes</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ Send a junk packet across the encrypted link. This is sometimes used
+ to add &quot;noise&quot; to a connection to confuse would-be attackers.
+ It can also be used as a keep-alive for long lived connections
+ traversing firewalls.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>bytes</b></code> -
+ the number of random bytes to send in the payload of the
+ ignored packet -- defaults to a random number from 10 to 41.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_hexdump"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_hexdump</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>hexdump</span>)</span>
+ </h3>
+ Turn on/off logging a hex dump of protocol traffic at DEBUG level in
+ the logs. Normally you would want this off (which is the default), but
+ if you are debugging something, it may be useful.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hexdump</b></code> -
+ <code>True</code> to log protocol traffix (in hex) to the log;
+ <code>False</code> otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_keepalive"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_keepalive</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>interval</span>)</span>
+ </h3>
+ Turn on/off keepalive packets (default is off). If this is set,
+ after <code>interval</code> seconds without sending any data over the
+ connection, a &quot;keepalive&quot; packet will be sent (and ignored by
+ the remote host). This can be useful to keep connections alive over a
+ NAT, for example.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>interval</b></code> -
+ seconds to wait before sending a keepalive packet (or 0 to
+ disable keepalives).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> fearow
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_log_channel"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_log_channel</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>)</span>
+ </h3>
+ Set the channel for this transport's logging. The default is
+ <code>&quot;paramiko.transport&quot;</code> but it can be set to
+ anything you want. (See the <code>logging</code> module for more info.)
+ SSH Channels will log to a sub-channel of the one specified.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ new channel name for logging.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.1
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="set_subsystem_handler"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">set_subsystem_handler</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>,
+ <span class=sig-arg>handler</span>,
+ <span class="sig-vararg">*larg</span>,
+ <span class="sig-kwarg">**kwarg</span>)</span>
+ </h3>
+ <p>Set the handler class for a subsystem in server mode. If a request
+ for this subsystem is made on an open ssh channel later, this handler
+ will be constructed and called -- see <a
+ href="paramiko.SubsystemHandler-class.html"
+ class="link"><code>SubsystemHandler</code></a> for more detailed
+ documentation.</p>
+ Any extra parameters (including keyword arguments) are saved and
+ passed to the <a href="paramiko.SubsystemHandler-class.html"
+ class="link"><code>SubsystemHandler</code></a> constructor later.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ name of the subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>handler</b></code> -
+ subclass of <a href="paramiko.SubsystemHandler-class.html"
+ class="link"><code>SubsystemHandler</code></a> that handles this
+ subsystem.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=class)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="start_client"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">start_client</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>event</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p>Negotiate a new SSH2 session as a client. This is the first step
+ after creating a new <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a>. A separate thread is created
+ for protocol negotiation.</p>
+ <p>If an event is passed in, this method returns immediately. When
+ negotiation is done (successful or not), the given <code>Event</code>
+ will be triggered. On failure, <a
+ href="paramiko.Transport-class.html#is_active"
+ class="link"><code>is_active</code></a> will return
+ <code>False</code>.</p>
+ <p>(Since 1.4) If <code>event</code> is <code>None</code>, this method
+ will not return until negotation is done. On success, the method
+ returns normally. Otherwise an SSHException is raised.</p>
+ After a successful negotiation, you will usually want to
+ authenticate, calling <a
+ href="paramiko.Transport-class.html#auth_password"
+ class="link"><code>auth_password</code></a> or <a
+ href="paramiko.Transport-class.html#auth_publickey"
+ class="link"><code>auth_publickey</code></a>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>event</b></code> -
+ an event to trigger when negotiation is complete
+ (optional)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=threading.Event)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if negotiation fails (and no <code>event</code> was passed
+ in)
+ </dl>
+<p><b>Notes:</b>
+<ul>
+ <li><a href="paramiko.Transport-class.html#connect"
+class="link"><code>connect</code></a> is a simpler method for connecting
+as a client.
+</li>
+ <li>After calling this method (or <a
+href="paramiko.Transport-class.html#start_server"
+class="link"><code>start_server</code></a> or <a
+href="paramiko.Transport-class.html#connect"
+class="link"><code>connect</code></a>), you should no longer directly
+read from or write to the original socket object.
+
+ </li>
+</ul></p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="start_server"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">start_server</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>event</span>=<span class=sig-default>None</span>,
+ <span class=sig-arg>server</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p>Negotiate a new SSH2 session as a server. This is the first step
+ after creating a new <a href="paramiko.Transport-class.html"
+ class="link"><code>Transport</code></a> and setting up your server host
+ key(s). A separate thread is created for protocol negotiation.</p>
+ <p>If an event is passed in, this method returns immediately. When
+ negotiation is done (successful or not), the given <code>Event</code>
+ will be triggered. On failure, <a
+ href="paramiko.Transport-class.html#is_active"
+ class="link"><code>is_active</code></a> will return
+ <code>False</code>.</p>
+ <p>(Since 1.4) If <code>event</code> is <code>None</code>, this method
+ will not return until negotation is done. On success, the method
+ returns normally. Otherwise an SSHException is raised.</p>
+ <p>After a successful negotiation, the client will need to
+ authenticate. Override the methods <a
+ href="../private/paramiko.ServerInterface-class.html#get_allowed_auths"
+ class="link"><code>get_allowed_auths</code></a>, <a
+ href="../private/paramiko.ServerInterface-class.html#check_auth_none"
+ class="link"><code>check_auth_none</code></a>, <a
+ href="../private/paramiko.ServerInterface-class.html#check_auth_password"
+ class="link"><code>check_auth_password</code></a>, and <a
+ href="../private/paramiko.ServerInterface-class.html#check_auth_publickey"
+ class="link"><code>check_auth_publickey</code></a> in the given
+ <code>server</code> object to control the authentication process.</p>
+ After a successful authentication, the client should request to open
+ a channel. Override <a
+ href="../private/paramiko.ServerInterface-class.html#check_channel_request"
+ class="link"><code>check_channel_request</code></a> in the given
+ <code>server</code> object to allow channels to be opened.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>event</b></code> -
+ an event to trigger when negotiation is complete.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=threading.Event)</i>
+ <dd><code><b>server</b></code> -
+ an object used to perform authentication and create <a
+ href="paramiko.Channel-class.html"
+ class="link"><code>Channel</code></a>s.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<a href="../private/paramiko.ServerInterface-class.html"
+ class="link"><code>server.ServerInterface</code></a>)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Raises:</b></dt>
+ <dd><code><b>SSHException</b></code> -
+ if negotiation fails (and no <code>event</code> was passed
+ in)
+ </dl>
+<p><b>Note:</b> After calling this method (or <a
+href="paramiko.Transport-class.html#start_client"
+class="link"><code>start_client</code></a> or <a
+href="paramiko.Transport-class.html#connect"
+class="link"><code>connect</code></a>), you should no longer directly
+read from or write to the original socket object.
+</p>
+
+ </dd></dl>
+</td></tr></table>
+
+<a name="use_compression"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">use_compression</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>compress</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ Turn on/off compression. This will only have an affect before
+ starting the transport (ie before calling <a
+ href="paramiko.Transport-class.html#connect"
+ class="link"><code>connect</code></a>, etc). By default, compression is
+ off since it negatively affects interactive sessions and is not fully
+ tested.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>compress</b></code> -
+ <code>True</code> to ask the remote client/server to compress
+ traffic; <code>False</code> to refuse compression
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Since:</b> 1.5.2
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF STATIC METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Static Method Details</th></tr>
+</table>
+
+<a name="load_server_moduli"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">load_server_moduli</span>(<span class=sig-arg>filename</span>=<span class=sig-default>None</span>)</span>
+ </h3>
+ <p><i>(optional)</i> Load a file of prime moduli for use in doing
+ group-exchange key negotiation in server mode. It's a rather obscure
+ option and can be safely ignored.</p>
+ In server mode, the remote client may request
+ &quot;group-exchange&quot; key negotiation, which asks the server to
+ send a random prime number that fits certain criteria. These primes are
+ pretty difficult to compute, so they can't be generated on demand. But
+ many systems contain a file of suitable primes (usually named something
+ like <code>/etc/ssh/moduli</code>). If you call
+ <code>load_server_moduli</code> and it returns <code>True</code>, then
+ this file of primes has been loaded and we will support
+ &quot;group-exchange&quot; in server mode. Otherwise server mode will
+ just claim that it doesn't support that method of key negotiation.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ optional path to the moduli file, if you happen to know that
+ it's not in a standard location.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ True if a moduli file was successfully loaded; False
+ otherwise.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+<p><b>Note:</b> This has no effect when used in client mode.
+</p>
+
+<p><b>Since:</b> doduo
+</p>
+
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.agent-module.html b/docs/public/paramiko.agent-module.html
new file mode 100644
index 0000000..560432a
--- /dev/null
+++ b/docs/public/paramiko.agent-module.html
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.agent</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;agent
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.agent-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.agent-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.agent</h2>
+
+SSH Agent interface for Unix clients.
+<hr/>
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER"><code>SSH2_AGENT_IDENTITIES_ANSWER</code></a></b> = <span title="12">12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE"><code>SSH2_AGENT_SIGN_RESPONSE</code></a></b> = <span title="14">14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES"><code>SSH2_AGENTC_REQUEST_IDENTITIES</code></a></b> = <span title="11">11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST"><code>SSH2_AGENTC_SIGN_REQUEST</code></a></b> = <span title="13">13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SSH2_AGENT_IDENTITIES_ANSWER"></a>
+<h3>SSH2_AGENT_IDENTITIES_ANSWER</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="12"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SSH2_AGENT_SIGN_RESPONSE"></a>
+<h3>SSH2_AGENT_SIGN_RESPONSE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="14"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SSH2_AGENTC_REQUEST_IDENTITIES"></a>
+<h3>SSH2_AGENTC_REQUEST_IDENTITIES</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="11"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SSH2_AGENTC_SIGN_REQUEST"></a>
+<h3>SSH2_AGENTC_SIGN_REQUEST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="13"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.dsskey-module.html b/docs/public/paramiko.dsskey-module.html
new file mode 100644
index 0000000..f600c89
--- /dev/null
+++ b/docs/public/paramiko.dsskey-module.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.dsskey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;dsskey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.dsskey-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.dsskey-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.dsskey</h2>
+
+<a href="paramiko.DSSKey-class.html"
+class="link"><code>DSSKey</code></a>
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.file-module.html b/docs/public/paramiko.file-module.html
new file mode 100644
index 0000000..4cb6c90
--- /dev/null
+++ b/docs/public/paramiko.file-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.file</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;file
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.file-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.file-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.file</h2>
+
+BufferedFile.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.message-module.html b/docs/public/paramiko.message-module.html
new file mode 100644
index 0000000..2ccf4d9
--- /dev/null
+++ b/docs/public/paramiko.message-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.message</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;message
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.message-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.message-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.message</h2>
+
+Implementation of an SSH2 &quot;message&quot;.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:46 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.pkey-module.html b/docs/public/paramiko.pkey-module.html
new file mode 100644
index 0000000..e7aac95
--- /dev/null
+++ b/docs/public/paramiko.pkey-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.pkey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;pkey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.pkey-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.pkey-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.pkey</h2>
+
+Common API for all public keys.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.rsakey-module.html b/docs/public/paramiko.rsakey-module.html
new file mode 100644
index 0000000..b287187
--- /dev/null
+++ b/docs/public/paramiko.rsakey-module.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.rsakey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;rsakey
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.rsakey-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.rsakey-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.rsakey</h2>
+
+<a href="paramiko.RSAKey-class.html"
+class="link"><code>RSAKey</code></a>
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.server-module.html b/docs/public/paramiko.server-module.html
new file mode 100644
index 0000000..b283866
--- /dev/null
+++ b/docs/public/paramiko.server-module.html
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.server</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;server
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.server-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.server-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.server</h2>
+
+<a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> is an interface to override
+for server support.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.server.InteractiveQuery-class.html"><code>InteractiveQuery</code></a></b></td>
+ <td>A query (set of prompts) for a user during interactive
+authentication.</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.server.InteractiveQuery-class.html b/docs/public/paramiko.server.InteractiveQuery-class.html
new file mode 100644
index 0000000..6a96be3
--- /dev/null
+++ b/docs/public/paramiko.server.InteractiveQuery-class.html
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.server.InteractiveQuery</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="paramiko.server-module.html">Module&nbsp;server</a> ::
+ Class&nbsp;InteractiveQuery
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.server.InteractiveQuery-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.server.InteractiveQuery-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type InteractiveQuery</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>InteractiveQuery</b>
+</pre><br />
+
+<hr/>
+
+A query (set of prompts) for a user during interactive
+authentication.
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.server.InteractiveQuery-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>instructions</span>,
+ <span class="summary-sig-vararg">*prompts</span>)</span></code>
+<br />
+Create a new interactive query to send to the client.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.server.InteractiveQuery-class.html#add_prompt" class="summary-sig-name"><code>add_prompt</code></a>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>prompt</span>,
+ <span class=summary-sig-arg>echo</span>)</span></code>
+<br />
+Add a prompt to this query.</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF METHOD DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Method Details</th></tr>
+</table>
+
+<a name="__init__"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">__init__</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>name</span>=<span class=sig-default>''</span>,
+ <span class=sig-arg>instructions</span>=<span class=sig-default>''</span>,
+ <span class="sig-vararg">*prompts</span>)</span>
+ <br /><i>(Constructor)</i>
+ </h3>
+ Create a new interactive query to send to the client. The name and
+ instructions are optional, but are generally displayed to the end user.
+ A list of prompts may be included, or they may be added via the <a
+ href="paramiko.server.InteractiveQuery-class.html#add_prompt"
+ class="link"><code>add_prompt</code></a> method.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>name</b></code> -
+ name of this query
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>instructions</b></code> -
+ user instructions (usually short) about this query
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Overrides:</b></dt>
+ <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="add_prompt"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">add_prompt</span>(<span class=sig-arg>self</span>,
+ <span class=sig-arg>prompt</span>,
+ <span class=sig-arg>echo</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ Add a prompt to this query. The prompt should be a (reasonably
+ short) string. Multiple prompts can be added to the same query.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>prompt</b></code> -
+ the user prompt
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>echo</b></code> -
+ <code>True</code> (default) if the user's response should be
+ echoed; <code>False</code> if not (for a password or similar)
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=bool)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.sftp-module.html b/docs/public/paramiko.sftp-module.html
new file mode 100644
index 0000000..66fb99e
--- /dev/null
+++ b/docs/public/paramiko.sftp-module.html
@@ -0,0 +1,1060 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp</h2>
+
+
+<!-- =========== START OF VARIABLE SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Variable Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_ATTRS"><code>CMD_ATTRS</code></a></b> = <span title="105">105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_CLOSE"><code>CMD_CLOSE</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_DATA"><code>CMD_DATA</code></a></b> = <span title="103">103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_EXTENDED"><code>CMD_EXTENDED</code></a></b> = <span title="200">200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY"><code>CMD_EXTENDED_REPLY</code></a></b> = <span title="201">201&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_FSETSTAT"><code>CMD_FSETSTAT</code></a></b> = <span title="10">10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_FSTAT"><code>CMD_FSTAT</code></a></b> = <span title="8">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_HANDLE"><code>CMD_HANDLE</code></a></b> = <span title="102">102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_INIT"><code>CMD_INIT</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_LSTAT"><code>CMD_LSTAT</code></a></b> = <span title="7">7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_MKDIR"><code>CMD_MKDIR</code></a></b> = <span title="14">14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_NAME"><code>CMD_NAME</code></a></b> = <span title="104">104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_NAMES"><code>CMD_NAMES</code></a></b> = <span title="{1: 'init', 2: 'version', 3: 'open', 4: 'close', 5: 'read', 6: 'write', 7: 'lstat', 8: 'fstat', 9: 'setstat', 10: 'fsetstat', 11: 'opendir', 12: 'readdir', 13: 'remove', 14: 'mkdir', 15: 'rmdir', 16: 'realpath', 17: 'stat', 18: 'rename', 19: 'readlink', 20: 'symlink', 200: 'extended', 201: 'extended_reply', 101: 'status', 102: 'handle', 103: 'data', 104: 'name', 105: 'attrs'}"><code>{1:&nbsp;'init',&nbsp;2:&nbsp;'version',&nbsp;3:&nbsp;'open',&nbsp;4:&nbsp;'clo<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_OPEN"><code>CMD_OPEN</code></a></b> = <span title="3">3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_OPENDIR"><code>CMD_OPENDIR</code></a></b> = <span title="11">11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_READ"><code>CMD_READ</code></a></b> = <span title="5">5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_READDIR"><code>CMD_READDIR</code></a></b> = <span title="12">12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_READLINK"><code>CMD_READLINK</code></a></b> = <span title="19">19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_REALPATH"><code>CMD_REALPATH</code></a></b> = <span title="16">16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_REMOVE"><code>CMD_REMOVE</code></a></b> = <span title="13">13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_RENAME"><code>CMD_RENAME</code></a></b> = <span title="18">18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_RMDIR"><code>CMD_RMDIR</code></a></b> = <span title="15">15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_SETSTAT"><code>CMD_SETSTAT</code></a></b> = <span title="9">9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_STAT"><code>CMD_STAT</code></a></b> = <span title="17">17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_STATUS"><code>CMD_STATUS</code></a></b> = <span title="101">101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_SYMLINK"><code>CMD_SYMLINK</code></a></b> = <span title="20">20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_VERSION"><code>CMD_VERSION</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#CMD_WRITE"><code>CMD_WRITE</code></a></b> = <span title="6">6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE"><code>SFTP_BAD_MESSAGE</code></a></b> = <span title="5">5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST"><code>SFTP_CONNECTION_LOST</code></a></b> = <span title="7">7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_DESC"><code>SFTP_DESC</code></a></b> = <span title="['Success', 'End of file', 'No such file', 'Permission denied', 'Failure', 'Bad message', 'No connection', 'Connection lost', 'Operation unsupported']"><code>['Success',&nbsp;'End&nbsp;of&nbsp;file',&nbsp;'No&nbsp;such&nbsp;file',&nbsp;'<span class="variable-ellipsis">...</span></code>
+</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_EOF"><code>SFTP_EOF</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FAILURE"><code>SFTP_FAILURE</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_APPEND"><code>SFTP_FLAG_APPEND</code></a></b> = <span title="4">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_CREATE"><code>SFTP_FLAG_CREATE</code></a></b> = <span title="8">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_EXCL"><code>SFTP_FLAG_EXCL</code></a></b> = <span title="32">32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_READ"><code>SFTP_FLAG_READ</code></a></b> = <span title="1">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC"><code>SFTP_FLAG_TRUNC</code></a></b> = <span title="16">16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_FLAG_WRITE"><code>SFTP_FLAG_WRITE</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_NO_CONNECTION"><code>SFTP_NO_CONNECTION</code></a></b> = <span title="6">6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE"><code>SFTP_NO_SUCH_FILE</code></a></b> = <span title="2">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_OK"><code>SFTP_OK</code></a></b> = <span title="0">0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED"><code>SFTP_OP_UNSUPPORTED</code></a></b> = <span title="8">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
+<td><b><a href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED"><code>SFTP_PERMISSION_DENIED</code></a></b> = <span title="3">3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>
+</table><br />
+
+
+<!-- =========== START OF VARIABLE DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Variable Details</th></tr>
+</table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_ATTRS"></a>
+<h3>CMD_ATTRS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="105"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_CLOSE"></a>
+<h3>CMD_CLOSE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_DATA"></a>
+<h3>CMD_DATA</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="103"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_EXTENDED"></a>
+<h3>CMD_EXTENDED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="200"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_EXTENDED_REPLY"></a>
+<h3>CMD_EXTENDED_REPLY</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="201"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+201&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_FSETSTAT"></a>
+<h3>CMD_FSETSTAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="10"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_FSTAT"></a>
+<h3>CMD_FSTAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_HANDLE"></a>
+<h3>CMD_HANDLE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="102"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_INIT"></a>
+<h3>CMD_INIT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_LSTAT"></a>
+<h3>CMD_LSTAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="7"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_MKDIR"></a>
+<h3>CMD_MKDIR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="14"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_NAME"></a>
+<h3>CMD_NAME</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="104"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_NAMES"></a>
+<h3>CMD_NAMES</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>dict</code>
+
+ </dd>
+<span title="{1: 'init', 2: 'version', 3: 'open', 4: 'close', 5: 'read', 6: 'write', 7: 'lstat', 8: 'fstat', 9: 'setstat', 10: 'fsetstat', 11: 'opendir', 12: 'readdir', 13: 'remove', 14: 'mkdir', 15: 'rmdir', 16: 'realpath', 17: 'stat', 18: 'rename', 19: 'readlink', 20: 'symlink', 200: 'extended', 201: 'extended_reply', 101: 'status', 102: 'handle', 103: 'data', 104: 'name', 105: 'attrs'}"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+{1: 'init',
+ 2: 'version',
+ 3: 'open',
+ 4: 'close',
+ 5: 'read',
+ 6: 'write',
+ 7: 'lstat',
+ 8: 'fstat',
+<span class="variable-ellipsis">...</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_OPEN"></a>
+<h3>CMD_OPEN</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="3"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_OPENDIR"></a>
+<h3>CMD_OPENDIR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="11"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_READ"></a>
+<h3>CMD_READ</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="5"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_READDIR"></a>
+<h3>CMD_READDIR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="12"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_READLINK"></a>
+<h3>CMD_READLINK</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="19"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_REALPATH"></a>
+<h3>CMD_REALPATH</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="16"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_REMOVE"></a>
+<h3>CMD_REMOVE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="13"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_RENAME"></a>
+<h3>CMD_RENAME</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="18"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_RMDIR"></a>
+<h3>CMD_RMDIR</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="15"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_SETSTAT"></a>
+<h3>CMD_SETSTAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="9"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_STAT"></a>
+<h3>CMD_STAT</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="17"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_STATUS"></a>
+<h3>CMD_STATUS</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="101"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_SYMLINK"></a>
+<h3>CMD_SYMLINK</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="20"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_VERSION"></a>
+<h3>CMD_VERSION</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="CMD_WRITE"></a>
+<h3>CMD_WRITE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="6"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_BAD_MESSAGE"></a>
+<h3>SFTP_BAD_MESSAGE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="5"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_CONNECTION_LOST"></a>
+<h3>SFTP_CONNECTION_LOST</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="7"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_DESC"></a>
+<h3>SFTP_DESC</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>list</code>
+
+ </dd>
+<span title="['Success', 'End of file', 'No such file', 'Permission denied', 'Failure', 'Bad message', 'No connection', 'Connection lost', 'Operation unsupported']"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+['Success',
+ 'End of file',
+ 'No such file',
+ 'Permission denied',
+ 'Failure',
+ 'Bad message',
+ 'No connection',
+ 'Connection lost',
+<span class="variable-ellipsis">...</span> </pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_EOF"></a>
+<h3>SFTP_EOF</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FAILURE"></a>
+<h3>SFTP_FAILURE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_APPEND"></a>
+<h3>SFTP_FLAG_APPEND</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="4"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_CREATE"></a>
+<h3>SFTP_FLAG_CREATE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_EXCL"></a>
+<h3>SFTP_FLAG_EXCL</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="32"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_READ"></a>
+<h3>SFTP_FLAG_READ</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="1"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_TRUNC"></a>
+<h3>SFTP_FLAG_TRUNC</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="16"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_FLAG_WRITE"></a>
+<h3>SFTP_FLAG_WRITE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_NO_CONNECTION"></a>
+<h3>SFTP_NO_CONNECTION</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="6"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_NO_SUCH_FILE"></a>
+<h3>SFTP_NO_SUCH_FILE</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="2"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_OK"></a>
+<h3>SFTP_OK</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="0"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_OP_UNSUPPORTED"></a>
+<h3>SFTP_OP_UNSUPPORTED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="8"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
+<a name="SFTP_PERMISSION_DENIED"></a>
+<h3>SFTP_PERMISSION_DENIED</h3>
+<dl>
+ <dt></dt>
+ <dd>
+ <dl>
+ <dt><b>Type:</b></dt>
+ <dd>
+ <code>int</code>
+
+ </dd>
+<span title="3"> <dt><b>Value:</b></dt>
+ <dd><table><tr><td>
+<pre class="variable">
+3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</pre>
+ </td></tr></table></dd>
+</span> </dl>
+ </dd>
+</dl></td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.sftp_attr-module.html b/docs/public/paramiko.sftp_attr-module.html
new file mode 100644
index 0000000..7ff2add
--- /dev/null
+++ b/docs/public/paramiko.sftp_attr-module.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_attr</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_attr
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_attr-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_attr-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_attr</h2>
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.sftp_client-module.html b/docs/public/paramiko.sftp_client-module.html
new file mode 100644
index 0000000..a82e15f
--- /dev/null
+++ b/docs/public/paramiko.sftp_client-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_client</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_client
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_client-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_client-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_client</h2>
+
+Client-mode SFTP support.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.sftp_file-module.html b/docs/public/paramiko.sftp_file-module.html
new file mode 100644
index 0000000..3d2f402
--- /dev/null
+++ b/docs/public/paramiko.sftp_file-module.html
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_file</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_file
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_file-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_file-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_file</h2>
+
+<a href="paramiko.SFTPFile-class.html"
+class="link"><code>SFTPFile</code></a>
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.sftp_handle-module.html b/docs/public/paramiko.sftp_handle-module.html
new file mode 100644
index 0000000..2a75e59
--- /dev/null
+++ b/docs/public/paramiko.sftp_handle-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_handle</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_handle
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_handle-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_handle-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_handle</h2>
+
+Abstraction of an SFTP file handle (for server mode).
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.sftp_server-module.html b/docs/public/paramiko.sftp_server-module.html
new file mode 100644
index 0000000..06183af
--- /dev/null
+++ b/docs/public/paramiko.sftp_server-module.html
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_server</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_server
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_server-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_server-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_server</h2>
+
+Server-mode SFTP support.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.sftp_si-module.html b/docs/public/paramiko.sftp_si-module.html
new file mode 100644
index 0000000..121d97e
--- /dev/null
+++ b/docs/public/paramiko.sftp_si-module.html
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_si</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;sftp_si
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.sftp_si-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.sftp_si-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.sftp_si</h2>
+
+<a href="../private/paramiko.SFTPServerInterface-class.html"
+class="link"><code>SFTPServerInterface</code></a> is an interface to
+override for SFTP server support.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.transport-module.html b/docs/public/paramiko.transport-module.html
new file mode 100644
index 0000000..42d378f
--- /dev/null
+++ b/docs/public/paramiko.transport-module.html
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.transport</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;transport
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.transport-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.transport-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.transport</h2>
+
+<a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> handles the core SSH2
+protocol.
+<hr/>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.util-module.html b/docs/public/paramiko.util-module.html
new file mode 100644
index 0000000..a7ad4cd
--- /dev/null
+++ b/docs/public/paramiko.util-module.html
@@ -0,0 +1,369 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.util</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ Module&nbsp;util
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.util-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.util-module.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE DESCRIPTION =========== -->
+<h2 class="module">Module paramiko.util</h2>
+
+Useful functions used by the rest of paramiko.
+<hr/>
+
+<!-- =========== START OF CLASSES =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Classes</th></tr>
+<tr><td width="15%">
+ <b><a href="paramiko.util.PFilter-class.html"><code>PFilter</code></a></b></td>
+ <td>&nbsp;</td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Function Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="bit_length"></a><span class="summary-sig"><span class="summary-sig-name">bit_length</span>(<span class=summary-sig-arg>n</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#deflate_long" class="summary-sig-name"><code>deflate_long</code></a>(<span class=summary-sig-arg>n</span>,
+ <span class=summary-sig-arg>add_sign_padding</span>)</span></code>
+<br />
+turns a long-int into a normalized byte string (adapted from
+Crypto.Util.number)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="format_binary"></a><span class="summary-sig"><span class="summary-sig-name">format_binary</span>(<span class=summary-sig-arg>data</span>,
+ <span class=summary-sig-arg>prefix</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="format_binary_line"></a><span class="summary-sig"><span class="summary-sig-name">format_binary_line</span>(<span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="format_binary_weird"></a><span class="summary-sig"><span class="summary-sig-name">format_binary_weird</span>(<span class=summary-sig-arg>data</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> string
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#generate_key_bytes" class="summary-sig-name"><code>generate_key_bytes</code></a>(<span class=summary-sig-arg>hashclass</span>,
+ <span class=summary-sig-arg>salt</span>,
+ <span class=summary-sig-arg>key</span>,
+ <span class=summary-sig-arg>nbytes</span>)</span></code>
+<br />
+Given a password, passphrase, or other human-source key, scramble it
+through a secure hash into some keyworthy bytes.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_logger"></a><span class="summary-sig"><span class="summary-sig-name">get_logger</span>(<span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="get_thread_id"></a><span class="summary-sig"><span class="summary-sig-name">get_thread_id</span>()</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#hexify" class="summary-sig-name"><code>hexify</code></a>(<span class=summary-sig-arg>s</span>)</span></code>
+<br />
+turn a string into a hex sequence</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#inflate_long" class="summary-sig-name"><code>inflate_long</code></a>(<span class=summary-sig-arg>s</span>,
+ <span class=summary-sig-arg>always_positive</span>)</span></code>
+<br />
+turns a normalized byte string into a long-int (adapted from
+Crypto.Util.number)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> dict(hostname, dict(keytype, <a
+ href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>))
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#load_host_keys" class="summary-sig-name"><code>load_host_keys</code></a>(<span class=summary-sig-arg>filename</span>)</span></code>
+<br />
+Read a file of known SSH host keys, in the format used by openssh, and
+return a compound dict of <code>hostname -&gt; keytype -&gt;</code> <a
+href="../private/paramiko.PKey-class.html"
+class="link"><code>PKey</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#log_to_file" class="summary-sig-name"><code>log_to_file</code></a>(<span class=summary-sig-arg>filename</span>,
+ <span class=summary-sig-arg>level</span>)</span></code>
+<br />
+send paramiko logs to a logfile, if they're not already going
+somewhere</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#lookup_ssh_host_config" class="summary-sig-name"><code>lookup_ssh_host_config</code></a>(<span class=summary-sig-arg>hostname</span>,
+ <span class=summary-sig-arg>config</span>)</span></code>
+<br />
+Return a dict of config options for a given hostname.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="mod_inverse"></a><span class="summary-sig"><span class="summary-sig-name">mod_inverse</span>(<span class=summary-sig-arg>x</span>,
+ <span class=summary-sig-arg>m</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1"> object
+</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#parse_ssh_config" class="summary-sig-name"><code>parse_ssh_config</code></a>(<span class=summary-sig-arg>file_obj</span>)</span></code>
+<br />
+Parse a config file of the format used by OpenSSH, and return an
+object that can be used to make queries to <a
+href="paramiko.util-module.html#lookup_ssh_host_config"
+class="link"><code>lookup_ssh_host_config</code></a>.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="safe_string"></a><span class="summary-sig"><span class="summary-sig-name">safe_string</span>(<span class=summary-sig-arg>s</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="tb_strings"></a><span class="summary-sig"><span class="summary-sig-name">tb_strings</span>()</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="paramiko.util-module.html#unhexify" class="summary-sig-name"><code>unhexify</code></a>(<span class=summary-sig-arg>s</span>)</span></code>
+<br />
+turn a hex sequence back into a string</td></tr>
+</table><br />
+
+
+<!-- =========== START OF FUNCTION DETAILS =========== -->
+<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="details">
+ <th colspan="2">Function Details</th></tr>
+</table>
+
+<a name="deflate_long"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">deflate_long</span>(<span class=sig-arg>n</span>,
+ <span class=sig-arg>add_sign_padding</span>=<span class=sig-default>True</span>)</span>
+ </h3>
+ turns a long-int into a normalized byte string (adapted from
+ Crypto.Util.number)
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="generate_key_bytes"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">generate_key_bytes</span>(<span class=sig-arg>hashclass</span>,
+ <span class=sig-arg>salt</span>,
+ <span class=sig-arg>key</span>,
+ <span class=sig-arg>nbytes</span>)</span>
+ </h3>
+ Given a password, passphrase, or other human-source key, scramble it
+ through a secure hash into some keyworthy bytes. This specific
+ algorithm is used for encrypting/decrypting private key files.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hashclass</b></code> -
+ class from <code>Crypto.Hash</code> that can be used as a
+ secure hashing function (like <code>MD5</code> or
+ <code>SHA</code>).
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=<code>Crypto.Hash</code>)</i>
+ <dd><code><b>salt</b></code> -
+ data to salt the hash with.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>key</b></code> -
+ human-entered password or passphrase.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ <dd><code><b>nbytes</b></code> -
+ number of bytes to generate.
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=int)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ key data
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=string)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="hexify"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">hexify</span>(<span class=sig-arg>s</span>)</span>
+ </h3>
+ turn a string into a hex sequence
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="inflate_long"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">inflate_long</span>(<span class=sig-arg>s</span>,
+ <span class=sig-arg>always_positive</span>=<span class=sig-default>False</span>)</span>
+ </h3>
+ turns a normalized byte string into a long-int (adapted from
+ Crypto.Util.number)
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="load_host_keys"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">load_host_keys</span>(<span class=sig-arg>filename</span>)</span>
+ </h3>
+ <p>Read a file of known SSH host keys, in the format used by openssh,
+ and return a compound dict of <code>hostname -&gt; keytype -&gt;</code>
+ <a href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>. The hostname may be an IP address
+ or DNS name. The keytype will be either
+ <code>&quot;ssh-rsa&quot;</code> or
+ <code>&quot;ssh-dss&quot;</code>.</p>
+ This type of file unfortunately doesn't exist on Windows, but on
+ posix, it will usually be stored in
+ <code>os.path.expanduser(&quot;~/.ssh/known_hosts&quot;)</code>.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>filename</b></code> -
+ name of the file to read host keys from
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ dict of host keys, indexed by hostname and then keytype
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=dict(hostname, dict(keytype, <a
+ href="../private/paramiko.PKey-class.html"
+ class="link"><code>PKey</code></a>)))</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="log_to_file"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">log_to_file</span>(<span class=sig-arg>filename</span>,
+ <span class=sig-arg>level</span>=<span class=sig-default>10</span>)</span>
+ </h3>
+ send paramiko logs to a logfile, if they're not already going
+ somewhere
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+
+<a name="lookup_ssh_host_config"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">lookup_ssh_host_config</span>(<span class=sig-arg>hostname</span>,
+ <span class=sig-arg>config</span>)</span>
+ </h3>
+ <p>Return a dict of config options for a given hostname. The
+ <code>config</code> object must come from <a
+ href="paramiko.util-module.html#parse_ssh_config"
+ class="link"><code>parse_ssh_config</code></a>.</p>
+ <p>The host-matching rules of OpenSSH's <code>ssh_config</code> man
+ page are used, which means that all configuration options from matching
+ host specifications are merged, with more specific hostmasks taking
+ precedence. In other words, if <code>&quot;Port&quot;</code> is set
+ under <code>&quot;Host *&quot;</code> and also <code>&quot;Host
+ *.example.com&quot;</code>, and the lookup is for
+ <code>&quot;ssh.example.com&quot;</code>, then the port entry for
+ <code>&quot;Host *.example.com&quot;</code> will win out.</p>
+ The keys in the returned dict are all normalized to lowercase (look
+ for <code>&quot;port&quot;</code>, not <code>&quot;Port&quot;</code>.
+ No other processing is done to the keys or values.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>hostname</b></code> -
+ the hostname to lookup
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=str)</i>
+ <dd><code><b>config</b></code> -
+ the config object to search
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=object)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="parse_ssh_config"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">parse_ssh_config</span>(<span class=sig-arg>file_obj</span>)</span>
+ </h3>
+ <p>Parse a config file of the format used by OpenSSH, and return an
+ object that can be used to make queries to <a
+ href="paramiko.util-module.html#lookup_ssh_host_config"
+ class="link"><code>lookup_ssh_host_config</code></a>. The format is
+ described in OpenSSH's <code>ssh_config</code> man page. This method is
+ provided primarily as a convenience to posix users (since the OpenSSH
+ format is a de-facto standard on posix) but should work fine on Windows
+ too.</p>
+ The return value is currently a list of dictionaries, each
+ containing host-specific configuration, but this is considered an
+ implementation detail and may be subject to change in later
+ versions.
+ <dl><dt></dt><dd>
+ <dl><dt><b>Parameters:</b></dt>
+ <dd><code><b>file_obj</b></code> -
+ a file-like object to read the config file from
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=file)</i>
+ </dd>
+ </dl>
+ <dl><dt><b>Returns:</b></dt>
+ <dd>
+ opaque configuration object
+ <br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ (type=object)</i>
+ </dd>
+ </dl>
+ </dd></dl>
+</td></tr></table>
+
+<a name="unhexify"></a>
+<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
+ <h3><span class="sig"><span class="sig-name">unhexify</span>(<span class=sig-arg>s</span>)</span>
+ </h3>
+ turn a hex sequence back into a string
+ <dl><dt></dt><dd>
+ </dd></dl>
+</td></tr></table>
+<br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/paramiko.util.PFilter-class.html b/docs/public/paramiko.util.PFilter-class.html
new file mode 100644
index 0000000..f1e8059
--- /dev/null
+++ b/docs/public/paramiko.util.PFilter-class.html
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.util.PFilter</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ <a href="paramiko-module.html">Package&nbsp;paramiko</a> ::
+ <a href="paramiko.util-module.html">Module&nbsp;util</a> ::
+ Class&nbsp;PFilter
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/paramiko.util.PFilter-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="paramiko.util.PFilter-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type PFilter</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <b>PFilter</b>
+</pre><br />
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="filter"></a><span class="summary-sig"><span class="summary-sig-name">filter</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>record</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__init__(...) initializes x; see x.__class__.__doc__ for
+signature</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__repr__() &lt;==&gt; repr(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/threading.Thread-class.html b/docs/public/threading.Thread-class.html
new file mode 100644
index 0000000..951099e
--- /dev/null
+++ b/docs/public/threading.Thread-class.html
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>threading.Thread</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <font size="-1"><b class="breadcrumbs">
+ Module&nbsp;threading ::
+ Class&nbsp;Thread
+ </b></font></br>
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/threading.Thread-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="threading.Thread-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF CLASS DESCRIPTION =========== -->
+<h2 class="class">Type Thread</h2>
+
+<pre class="base-tree">
+<a href="__builtin__.object-class.html"><code>object</code></a> --+
+ |
+ <a href="../private/threading._Verbose-class.html"><code>_Verbose</code></a> --+
+ |
+ <b>Thread</b>
+</pre><br />
+
+<dl><dt><b>Known Subclasses:</b></dt>
+<dd>
+ <a href="paramiko.SubsystemHandler-class.html"><code>SubsystemHandler</code></a>,
+ <a href="paramiko.Transport-class.html"><code>Transport</code></a></dd></dl>
+
+<hr/>
+
+
+<!-- =========== START OF METHOD SUMMARY =========== -->
+<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="summary">
+ <th colspan="2">Method Summary</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>group</span>,
+ <span class=summary-sig-arg>target</span>,
+ <span class=summary-sig-arg>name</span>,
+ <span class=summary-sig-arg>args</span>,
+ <span class=summary-sig-arg>kwargs</span>,
+ <span class=summary-sig-arg>verbose</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">(type, value, traceback)</font></td>
+ <td><code><span class="summary-sig"><code>__exc_info</code>()</span></code>
+<br />
+Return information about the most recent exception caught by an except
+clause in the current stack frame or in an older stack frame.</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="getName"></a><span class="summary-sig"><span class="summary-sig-name">getName</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="isAlive"></a><span class="summary-sig"><span class="summary-sig-name">isAlive</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="isDaemon"></a><span class="summary-sig"><span class="summary-sig-name">isDaemon</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="join"></a><span class="summary-sig"><span class="summary-sig-name">join</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>timeout</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="run"></a><span class="summary-sig"><span class="summary-sig-name">run</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="setDaemon"></a><span class="summary-sig"><span class="summary-sig-name">setDaemon</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>daemonic</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="setName"></a><span class="summary-sig"><span class="summary-sig-name">setName</span>(<span class=summary-sig-arg>self</span>,
+ <span class=summary-sig-arg>name</span>)</span></code>
+</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><a name="start"></a><span class="summary-sig"><span class="summary-sig-name">start</span>(<span class=summary-sig-arg>self</span>)</span></code>
+</td></tr>
+<tr bgcolor="#e8f0f8" class="group">
+ <th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__hash__() &lt;==&gt; hash(x)</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
+ <span class=summary-sig-arg>S</span>,
+ <span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+helper for pickle</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
+<br />
+x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
+<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
+ <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
+<br />
+x.__str__() &lt;==&gt; str(x)</td></tr>
+</table><br />
+
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:47 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/docs/public/toc-everything.html b/docs/public/toc-everything.html
new file mode 100644
index 0000000..e699f06
--- /dev/null
+++ b/docs/public/toc-everything.html
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Everything</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b>Everything</b></font></center>
+<hr>
+
+<!-- =========== START OF ALL CLASSES =========== -->
+<font size="+1"><b>All&nbsp;Classes</b></font><br />
+<a target="mainFrame" href="paramiko.Agent-class.html">paramiko.Agent</a><br />
+<a target="mainFrame" href="paramiko.AgentKey-class.html">paramiko.AgentKey</a><br />
+<a target="mainFrame" href="paramiko.BufferedFile-class.html">paramiko.BufferedFile</a><br />
+<a target="mainFrame" href="paramiko.Channel-class.html">paramiko.Channel</a><br />
+<a target="mainFrame" href="paramiko.DSSKey-class.html">paramiko.DSSKey</a><br />
+<a target="mainFrame" href="paramiko.Message-class.html">paramiko.Message</a><br />
+<a target="mainFrame" href="paramiko.RSAKey-class.html">paramiko.RSAKey</a><br />
+<a target="mainFrame" href="paramiko.SecurityOptions-class.html">paramiko.SecurityOptions</a><br />
+<a target="mainFrame" href="paramiko.server.InteractiveQuery-class.html">paramiko.server.InteractiveQuery</a><br />
+<a target="mainFrame" href="paramiko.SFTP-class.html">paramiko.SFTP</a><br />
+<a target="mainFrame" href="paramiko.SFTPAttributes-class.html">paramiko.SFTPAttributes</a><br />
+<a target="mainFrame" href="paramiko.SFTPClient-class.html">paramiko.SFTPClient</a><br />
+<a target="mainFrame" href="paramiko.SFTPFile-class.html">paramiko.SFTPFile</a><br />
+<a target="mainFrame" href="paramiko.SFTPHandle-class.html">paramiko.SFTPHandle</a><br />
+<a target="mainFrame" href="paramiko.SFTPServer-class.html">paramiko.SFTPServer</a><br />
+<a target="mainFrame" href="paramiko.SubsystemHandler-class.html">paramiko.SubsystemHandler</a><br />
+<a target="mainFrame" href="paramiko.Transport-class.html">paramiko.Transport</a><br />
+<a target="mainFrame" href="paramiko.util.PFilter-class.html">paramiko.util.PFilter</a><br />
+<br />
+
+<!-- =========== START OF ALL EXCEPTIONS =========== -->
+<font size="+1"><b>All&nbsp;Exceptions</b></font><br />
+<a target="mainFrame" href="paramiko.BadAuthenticationType-class.html">paramiko.BadAuthenticationType</a><br />
+<a target="mainFrame" href="paramiko.PasswordRequiredException-class.html">paramiko.PasswordRequiredException</a><br />
+<a target="mainFrame" href="paramiko.SFTPError-class.html">paramiko.SFTPError</a><br />
+<a target="mainFrame" href="paramiko.SSHException-class.html">paramiko.SSHException</a><br />
+<br />
+
+<!-- =========== START OF ALL FUNCTIONS =========== -->
+<font size="+1"><b>All&nbsp;Functions</b></font><br />
+<a target="mainFrame" href="paramiko.util-module.html#bit_length">bit_length</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#deflate_long">deflate_long</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary">format_binary</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#get_logger">get_logger</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#hexify">hexify</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#inflate_long">inflate_long</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#log_to_file">log_to_file</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#safe_string">safe_string</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#tb_strings">tb_strings</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#unhexify">unhexify</a><br />
+<br />
+
+<!-- =========== START OF ALL VARIABLES =========== -->
+<font size="+1"><b>All&nbsp;Variables</b></font><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_ATTRS">CMD_ATTRS</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_CLOSE">CMD_CLOSE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_DATA">CMD_DATA</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_HANDLE">CMD_HANDLE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_INIT">CMD_INIT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_LSTAT">CMD_LSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_MKDIR">CMD_MKDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAME">CMD_NAME</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAMES">CMD_NAMES</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPEN">CMD_OPEN</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPENDIR">CMD_OPENDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READ">CMD_READ</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READDIR">CMD_READDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READLINK">CMD_READLINK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RMDIR">CMD_RMDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SETSTAT">CMD_SETSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STAT">CMD_STAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STATUS">CMD_STATUS</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SYMLINK">CMD_SYMLINK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_VERSION">CMD_VERSION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_WRITE">CMD_WRITE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_EOF">SFTP_EOF</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FAILURE">SFTP_FAILURE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_APPEND">SFTP_FLAG_APPEND</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_CREATE">SFTP_FLAG_CREATE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_EXCL">SFTP_FLAG_EXCL</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_READ">SFTP_FLAG_READ</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OK">SFTP_OK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED">SFTP_OP_UNSUPPORTED</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED">SFTP_PERMISSION_DENIED</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER">SSH2_AGENT_IDENTITIES_ANSWER</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE">SSH2_AGENT_SIGN_RESPONSE</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES">SSH2_AGENTC_REQUEST_IDENTITIES</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST">SSH2_AGENTC_SIGN_REQUEST</a><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-everything.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko-module.html b/docs/public/toc-paramiko-module.html
new file mode 100644
index 0000000..7353601
--- /dev/null
+++ b/docs/public/toc-paramiko-module.html
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko-module.html">paramiko</a></b></font></center>
+<hr>
+
+<!-- =========== START OF MODULES =========== -->
+<font size="+1"><b>Modules</b></font><br />
+<a target="mainFrame" href="paramiko.agent-module.html">agent</a><br />
+<a target="mainFrame" href="paramiko.dsskey-module.html">dsskey</a><br />
+<a target="mainFrame" href="paramiko.file-module.html">file</a><br />
+<a target="mainFrame" href="paramiko.message-module.html">message</a><br />
+<a target="mainFrame" href="paramiko.pkey-module.html">pkey</a><br />
+<a target="mainFrame" href="paramiko.rsakey-module.html">rsakey</a><br />
+<a target="mainFrame" href="paramiko.server-module.html">server</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html">sftp</a><br />
+<a target="mainFrame" href="paramiko.sftp_attr-module.html">sftp_attr</a><br />
+<a target="mainFrame" href="paramiko.sftp_client-module.html">sftp_client</a><br />
+<a target="mainFrame" href="paramiko.sftp_file-module.html">sftp_file</a><br />
+<a target="mainFrame" href="paramiko.sftp_handle-module.html">sftp_handle</a><br />
+<a target="mainFrame" href="paramiko.sftp_server-module.html">sftp_server</a><br />
+<a target="mainFrame" href="paramiko.sftp_si-module.html">sftp_si</a><br />
+<a target="mainFrame" href="paramiko.transport-module.html">transport</a><br />
+<a target="mainFrame" href="paramiko.util-module.html">util</a><br />
+<br />
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="paramiko.Agent-class.html">Agent</a><br />
+<a target="mainFrame" href="paramiko.AgentKey-class.html">AgentKey</a><br />
+<a target="mainFrame" href="paramiko.BufferedFile-class.html">BufferedFile</a><br />
+<a target="mainFrame" href="paramiko.Channel-class.html">Channel</a><br />
+<a target="mainFrame" href="paramiko.DSSKey-class.html">DSSKey</a><br />
+<a target="mainFrame" href="paramiko.Message-class.html">Message</a><br />
+<a target="mainFrame" href="paramiko.RSAKey-class.html">RSAKey</a><br />
+<a target="mainFrame" href="paramiko.SecurityOptions-class.html">SecurityOptions</a><br />
+<a target="mainFrame" href="paramiko.SFTP-class.html">SFTP</a><br />
+<a target="mainFrame" href="paramiko.SFTPAttributes-class.html">SFTPAttributes</a><br />
+<a target="mainFrame" href="paramiko.SFTPClient-class.html">SFTPClient</a><br />
+<a target="mainFrame" href="paramiko.SFTPFile-class.html">SFTPFile</a><br />
+<a target="mainFrame" href="paramiko.SFTPHandle-class.html">SFTPHandle</a><br />
+<a target="mainFrame" href="paramiko.SFTPServer-class.html">SFTPServer</a><br />
+<a target="mainFrame" href="paramiko.SubsystemHandler-class.html">SubsystemHandler</a><br />
+<a target="mainFrame" href="paramiko.Transport-class.html">Transport</a><br />
+<br />
+
+<!-- =========== START OF EXCEPTIONS =========== -->
+<font size="+1"><b>Exceptions</b></font><br />
+<a target="mainFrame" href="paramiko.BadAuthenticationType-class.html">BadAuthenticationType</a><br />
+<a target="mainFrame" href="paramiko.PasswordRequiredException-class.html">PasswordRequiredException</a><br />
+<a target="mainFrame" href="paramiko.SFTPError-class.html">SFTPError</a><br />
+<a target="mainFrame" href="paramiko.SSHException-class.html">SSHException</a><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.agent-module.html b/docs/public/toc-paramiko.agent-module.html
new file mode 100644
index 0000000..543e5af
--- /dev/null
+++ b/docs/public/toc-paramiko.agent-module.html
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.agent</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.agent-module.html">agent</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_IDENTITIES_ANSWER">SSH2_AGENT_IDENTITIES_ANSWER</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENT_SIGN_RESPONSE">SSH2_AGENT_SIGN_RESPONSE</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_REQUEST_IDENTITIES">SSH2_AGENTC_REQUEST_IDENTITIES</a><br />
+<a target="mainFrame" href="paramiko.agent-module.html#SSH2_AGENTC_SIGN_REQUEST">SSH2_AGENTC_SIGN_REQUEST</a><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.agent-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.dsskey-module.html b/docs/public/toc-paramiko.dsskey-module.html
new file mode 100644
index 0000000..7f5fddb
--- /dev/null
+++ b/docs/public/toc-paramiko.dsskey-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.dsskey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.dsskey-module.html">dsskey</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.dsskey-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.file-module.html b/docs/public/toc-paramiko.file-module.html
new file mode 100644
index 0000000..9c02537
--- /dev/null
+++ b/docs/public/toc-paramiko.file-module.html
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.file</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.file-module.html">file</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.file-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.message-module.html b/docs/public/toc-paramiko.message-module.html
new file mode 100644
index 0000000..14ecd78
--- /dev/null
+++ b/docs/public/toc-paramiko.message-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.message</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.message-module.html">message</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.message-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.pkey-module.html b/docs/public/toc-paramiko.pkey-module.html
new file mode 100644
index 0000000..a2c0c5b
--- /dev/null
+++ b/docs/public/toc-paramiko.pkey-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.pkey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.pkey-module.html">pkey</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.pkey-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.rsakey-module.html b/docs/public/toc-paramiko.rsakey-module.html
new file mode 100644
index 0000000..ceceb19
--- /dev/null
+++ b/docs/public/toc-paramiko.rsakey-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.rsakey</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.rsakey-module.html">rsakey</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.rsakey-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.server-module.html b/docs/public/toc-paramiko.server-module.html
new file mode 100644
index 0000000..c01d6d6
--- /dev/null
+++ b/docs/public/toc-paramiko.server-module.html
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.server</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.server-module.html">server</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="paramiko.server.InteractiveQuery-class.html">InteractiveQuery</a><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.server-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.sftp-module.html b/docs/public/toc-paramiko.sftp-module.html
new file mode 100644
index 0000000..52f03a3
--- /dev/null
+++ b/docs/public/toc-paramiko.sftp-module.html
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp-module.html">sftp</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_ATTRS">CMD_ATTRS</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_CLOSE">CMD_CLOSE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_DATA">CMD_DATA</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED">CMD_EXTENDED</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_EXTENDED_REPLY">CMD_EXTENDED_REPLY</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSETSTAT">CMD_FSETSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_FSTAT">CMD_FSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_HANDLE">CMD_HANDLE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_INIT">CMD_INIT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_LSTAT">CMD_LSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_MKDIR">CMD_MKDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAME">CMD_NAME</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_NAMES">CMD_NAMES</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPEN">CMD_OPEN</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_OPENDIR">CMD_OPENDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READ">CMD_READ</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READDIR">CMD_READDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_READLINK">CMD_READLINK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REALPATH">CMD_REALPATH</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_REMOVE">CMD_REMOVE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RENAME">CMD_RENAME</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_RMDIR">CMD_RMDIR</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SETSTAT">CMD_SETSTAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STAT">CMD_STAT</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_STATUS">CMD_STATUS</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_SYMLINK">CMD_SYMLINK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_VERSION">CMD_VERSION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#CMD_WRITE">CMD_WRITE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_BAD_MESSAGE">SFTP_BAD_MESSAGE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_CONNECTION_LOST">SFTP_CONNECTION_LOST</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_DESC">SFTP_DESC</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_EOF">SFTP_EOF</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FAILURE">SFTP_FAILURE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_APPEND">SFTP_FLAG_APPEND</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_CREATE">SFTP_FLAG_CREATE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_EXCL">SFTP_FLAG_EXCL</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_READ">SFTP_FLAG_READ</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_TRUNC">SFTP_FLAG_TRUNC</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_FLAG_WRITE">SFTP_FLAG_WRITE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_CONNECTION">SFTP_NO_CONNECTION</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_NO_SUCH_FILE">SFTP_NO_SUCH_FILE</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OK">SFTP_OK</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_OP_UNSUPPORTED">SFTP_OP_UNSUPPORTED</a><br />
+<a target="mainFrame" href="paramiko.sftp-module.html#SFTP_PERMISSION_DENIED">SFTP_PERMISSION_DENIED</a><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.sftp-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.sftp_attr-module.html b/docs/public/toc-paramiko.sftp_attr-module.html
new file mode 100644
index 0000000..080044e
--- /dev/null
+++ b/docs/public/toc-paramiko.sftp_attr-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_attr</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_attr-module.html">sftp_attr</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.sftp_attr-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.sftp_client-module.html b/docs/public/toc-paramiko.sftp_client-module.html
new file mode 100644
index 0000000..7bf1ad8
--- /dev/null
+++ b/docs/public/toc-paramiko.sftp_client-module.html
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_client</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_client-module.html">sftp_client</a></b></font></center>
+<hr>
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.sftp_client-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.sftp_file-module.html b/docs/public/toc-paramiko.sftp_file-module.html
new file mode 100644
index 0000000..aee1350
--- /dev/null
+++ b/docs/public/toc-paramiko.sftp_file-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_file</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_file-module.html">sftp_file</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.sftp_file-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.sftp_handle-module.html b/docs/public/toc-paramiko.sftp_handle-module.html
new file mode 100644
index 0000000..fc8b60a
--- /dev/null
+++ b/docs/public/toc-paramiko.sftp_handle-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_handle</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_handle-module.html">sftp_handle</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.sftp_handle-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.sftp_server-module.html b/docs/public/toc-paramiko.sftp_server-module.html
new file mode 100644
index 0000000..93677ba
--- /dev/null
+++ b/docs/public/toc-paramiko.sftp_server-module.html
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_server</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_server-module.html">sftp_server</a></b></font></center>
+<hr>
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.sftp_server-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.sftp_si-module.html b/docs/public/toc-paramiko.sftp_si-module.html
new file mode 100644
index 0000000..58a1d30
--- /dev/null
+++ b/docs/public/toc-paramiko.sftp_si-module.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.sftp_si</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.sftp_si-module.html">sftp_si</a></b></font></center>
+<hr>
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.sftp_si-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.transport-module.html b/docs/public/toc-paramiko.transport-module.html
new file mode 100644
index 0000000..14e73b4
--- /dev/null
+++ b/docs/public/toc-paramiko.transport-module.html
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.transport</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.transport-module.html">transport</a></b></font></center>
+<hr>
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.transport-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc-paramiko.util-module.html b/docs/public/toc-paramiko.util-module.html
new file mode 100644
index 0000000..1224321
--- /dev/null
+++ b/docs/public/toc-paramiko.util-module.html
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>paramiko.util</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b><a target="mainFrame" href="paramiko.util-module.html">util</a></b></font></center>
+<hr>
+
+<!-- =========== START OF CLASSES =========== -->
+<font size="+1"><b>Classes</b></font><br />
+<a target="mainFrame" href="paramiko.util.PFilter-class.html">PFilter</a><br />
+<br />
+
+<!-- =========== START OF FUNCTIONS =========== -->
+<font size="+1"><b>Functions</b></font><br />
+<a target="mainFrame" href="paramiko.util-module.html#bit_length">bit_length</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#deflate_long">deflate_long</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary">format_binary</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary_line">format_binary_line</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#format_binary_weird">format_binary_weird</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#generate_key_bytes">generate_key_bytes</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#get_logger">get_logger</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#get_thread_id">get_thread_id</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#hexify">hexify</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#inflate_long">inflate_long</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#load_host_keys">load_host_keys</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#log_to_file">log_to_file</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#lookup_ssh_host_config">lookup_ssh_host_config</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#mod_inverse">mod_inverse</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#parse_ssh_config">parse_ssh_config</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#safe_string">safe_string</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#tb_strings">tb_strings</a><br />
+<a target="mainFrame" href="paramiko.util-module.html#unhexify">unhexify</a><br />
+<br />
+
+<!-- =========== START OF VARIABLES =========== -->
+<font size="+1"><b>Variables</b></font><br />
+<br />
+
+<hr>
+<font size="-2">[<a href="../private/toc-paramiko.util-module.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/toc.html b/docs/public/toc.html
new file mode 100644
index 0000000..a99a3d0
--- /dev/null
+++ b/docs/public/toc.html
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Table of Contents</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<center><font size="+1"><b>Table&nbsp;of&nbsp;Contents</b></font></center>
+<hr>
+<a target="moduleFrame" href="toc-everything.html">Everything</a><br />
+
+<!-- =========== START OF PACKAGES =========== -->
+<br /><font size="+1"><b>Packages</b></font><br />
+<a target="moduleFrame" href="toc-paramiko-module.html">paramiko</a><br />
+
+<!-- =========== START OF MODULES =========== -->
+<br /><font size="+1"><b>Modules</b></font><br />
+<a target="moduleFrame" href="toc-paramiko.agent-module.html">paramiko.agent</a><br />
+<a target="moduleFrame" href="toc-paramiko.dsskey-module.html">paramiko.dsskey</a><br />
+<a target="moduleFrame" href="toc-paramiko.file-module.html">paramiko.file</a><br />
+<a target="moduleFrame" href="toc-paramiko.message-module.html">paramiko.message</a><br />
+<a target="moduleFrame" href="toc-paramiko.pkey-module.html">paramiko.pkey</a><br />
+<a target="moduleFrame" href="toc-paramiko.rsakey-module.html">paramiko.rsakey</a><br />
+<a target="moduleFrame" href="toc-paramiko.server-module.html">paramiko.server</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp-module.html">paramiko.sftp</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_attr-module.html">paramiko.sftp_attr</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_client-module.html">paramiko.sftp_client</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_file-module.html">paramiko.sftp_file</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_handle-module.html">paramiko.sftp_handle</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_server-module.html">paramiko.sftp_server</a><br />
+<a target="moduleFrame" href="toc-paramiko.sftp_si-module.html">paramiko.sftp_si</a><br />
+<a target="moduleFrame" href="toc-paramiko.transport-module.html">paramiko.transport</a><br />
+<a target="moduleFrame" href="toc-paramiko.util-module.html">paramiko.util</a><br />
+
+<br /><hr>
+<font size="-2">[<a href="../private/toc.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font>
+</body>
+</html>
diff --git a/docs/public/trees.html b/docs/public/trees.html
new file mode 100644
index 0000000..6c85192
--- /dev/null
+++ b/docs/public/trees.html
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Module and Class Hierarchies</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
+</head>
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th bgcolor="#70b0f0" class="navselect">&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ </td>
+ <td><table cellpadding="0" cellspacing="0">
+ <tr><td align="right"><font size="-2">[<a href="../private/trees.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
+ <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="trees.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
+ </table></td>
+</tr></table>
+
+<!-- =========== START OF MODULE HIERARCHY =========== -->
+<h2>Module Hierarchy</h2>
+<ul>
+<li> <b><a href="paramiko-module.html"><code>paramiko</code></a></b>: <i><i>Paramiko</i> (a combination of the esperanto words for
+&quot;paranoid&quot; and &quot;friend&quot;) is a module for python 2.3
+or greater that implements the SSH2 protocol for secure (encrypted and
+authenticated) connections to remote machines.</i>
+ <ul>
+ <li> <b><a href="paramiko.agent-module.html"><code>agent</code></a></b>: <i>SSH Agent interface for Unix clients.</i>
+ <li> <b><a href="paramiko.dsskey-module.html"><code>dsskey</code></a></b>: <i><a href="paramiko.DSSKey-class.html"
+class="link"><code>DSSKey</code></a></i>
+ <li> <b><a href="paramiko.file-module.html"><code>file</code></a></b>: <i>BufferedFile.</i>
+ <li> <b><a href="paramiko.message-module.html"><code>message</code></a></b>: <i>Implementation of an SSH2 &quot;message&quot;.</i>
+ <li> <b><a href="paramiko.pkey-module.html"><code>pkey</code></a></b>: <i>Common API for all public keys.</i>
+ <li> <b><a href="paramiko.rsakey-module.html"><code>rsakey</code></a></b>: <i><a href="paramiko.RSAKey-class.html"
+class="link"><code>RSAKey</code></a></i>
+ <li> <b><a href="paramiko.server-module.html"><code>server</code></a></b>: <i><a href="../private/paramiko.ServerInterface-class.html"
+class="link"><code>ServerInterface</code></a> is an interface to override
+for server support.</i>
+ <li> <b><a href="paramiko.sftp-module.html"><code>sftp</code></a></b>
+ <li> <b><a href="paramiko.sftp_attr-module.html"><code>sftp_attr</code></a></b>
+ <li> <b><a href="paramiko.sftp_client-module.html"><code>sftp_client</code></a></b>: <i>Client-mode SFTP support.</i>
+ <li> <b><a href="paramiko.sftp_file-module.html"><code>sftp_file</code></a></b>: <i><a href="paramiko.SFTPFile-class.html"
+class="link"><code>SFTPFile</code></a></i>
+ <li> <b><a href="paramiko.sftp_handle-module.html"><code>sftp_handle</code></a></b>: <i>Abstraction of an SFTP file handle (for server mode).</i>
+ <li> <b><a href="paramiko.sftp_server-module.html"><code>sftp_server</code></a></b>: <i>Server-mode SFTP support.</i>
+ <li> <b><a href="paramiko.sftp_si-module.html"><code>sftp_si</code></a></b>: <i><a href="../private/paramiko.SFTPServerInterface-class.html"
+class="link"><code>SFTPServerInterface</code></a> is an interface to
+override for SFTP server support.</i>
+ <li> <b><a href="paramiko.transport-module.html"><code>transport</code></a></b>: <i><a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a> handles the core SSH2
+protocol.</i>
+ <li> <b><a href="paramiko.util-module.html"><code>util</code></a></b>: <i>Useful functions used by the rest of paramiko.</i>
+ </ul>
+</ul>
+
+<!-- =========== START OF CLASS HIERARCHY =========== -->
+<h2>Class Hierarchy</h2>
+<ul>
+ <li> <b><a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></b>: <i>
+The most base type</i>
+ <ul>
+ <li> <b><a href="paramiko.BufferedFile-class.html"><code>paramiko.BufferedFile</code></a></b>: <i>
+Reusable base class to implement python-style file buffering around a
+simpler stream.</i>
+ <ul>
+ <li> <b><a href="paramiko.SFTPFile-class.html"><code>paramiko.SFTPFile</code></a></b>: <i>
+Proxy object for a file on the remote server, in client mode SFTP.</i>
+ </ul>
+ <li> <b><a href="paramiko.Channel-class.html"><code>paramiko.Channel</code></a></b>: <i>
+A secure tunnel across an SSH <a href="paramiko.Transport-class.html"
+class="link"><code>Transport</code></a>.</i>
+ <li> <b><a href="paramiko.server.InteractiveQuery-class.html"><code>paramiko.server.InteractiveQuery</code></a></b>: <i>
+A query (set of prompts) for a user during interactive
+authentication.</i>
+ <li> <b><a href="paramiko.Message-class.html"><code>paramiko.Message</code></a></b>: <i>
+An SSH2 <i>Message</i> is a stream of bytes that encodes some
+combination of strings, integers, bools, and infinite-precision integers
+(known in python as <i>long</i>s).</i>
+ <li> <b><a href="paramiko.util.PFilter-class.html"><code>paramiko.util.PFilter</code></a></b>
+ <li> <b><a href="paramiko.SecurityOptions-class.html"><code>paramiko.SecurityOptions</code></a></b>: <i>
+Simple object containing the security preferences of an ssh
+transport.</i>
+ <li> <b><a href="paramiko.SFTPAttributes-class.html"><code>paramiko.SFTPAttributes</code></a></b>: <i>
+Representation of the attributes of a file (or proxied file) for SFTP
+in client or server mode.</i>
+ <li> <b><a href="paramiko.SFTPHandle-class.html"><code>paramiko.SFTPHandle</code></a></b>: <i>
+Abstract object representing a handle to an open file (or folder) in
+an SFTP server implementation.</i>
+ <li> <b><a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></b>: <i>
+type(object) -&gt; the object's type type(name, bases, dict) -&gt; a
+new type</i>
+ <ul>
+ </ul>
+ <ul>
+ </ul>
+ <ul>
+ </ul>
+ </ul>
+ <li> <b><a href="exceptions.Exception-class.html"><code>exceptions.Exception</code></a></b>: <i>
+Common base class for all exceptions.</i>
+ <ul>
+ <li> <b><a href="paramiko.SFTPError-class.html"><code>paramiko.SFTPError</code></a></b>
+ <li> <b><a href="paramiko.SSHException-class.html"><code>paramiko.SSHException</code></a></b>: <i>
+Exception raised by failures in SSH2 protocol negotiation or logic
+errors.</i>
+ <ul>
+ <li> <b><a href="paramiko.BadAuthenticationType-class.html"><code>paramiko.BadAuthenticationType</code></a></b>: <i>
+Exception raised when an authentication type (like password) is used,
+but the server isn't allowing that type.</i>
+ <li> <b><a href="paramiko.PasswordRequiredException-class.html"><code>paramiko.PasswordRequiredException</code></a></b>: <i>
+Exception raised when a password is needed to unlock a private key
+file.</i>
+ </ul>
+ </ul>
+ <li> <b><a href="paramiko.Agent-class.html"><code>paramiko.Agent</code></a></b>: <i>
+Client interface for using private keys from an SSH agent running on
+the local machine.</i>
+</ul>
+
+<!-- =========== START OF NAVBAR =========== -->
+<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="center">
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="paramiko-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Dec 4 11:16:48 2005</font></td>
+ <td align="right"><a href="http://epydoc.sourceforge.net"
+ ><font size="-2">http://epydoc.sf.net</font></a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/forward.py b/forward.py
new file mode 100644
index 0000000..f91e969
--- /dev/null
+++ b/forward.py
@@ -0,0 +1,219 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Sample script showing how to do local port forwarding over paramiko.
+
+This script connects to the requested SSH server and sets up local port
+forwarding (the openssh -L option) from a local port through a tunneled
+connection to a destination reachable from the SSH server machine.
+"""
+
+import sys
+import os
+import socket
+import select
+import SocketServer
+import getpass
+import base64
+from optparse import OptionParser
+
+import paramiko
+
+DEFAULT_PORT = 4000
+SSH_PORT = 22
+VERBOSE = True
+READPASS = False
+
+
+class ForwardServer (SocketServer.ThreadingTCPServer):
+ daemon_threads = True
+ allow_reuse_address = True
+
+
+class Handler (SocketServer.BaseRequestHandler):
+
+ def handle(self):
+ try:
+ chan = self.ssh_transport.open_channel('direct-tcpip',
+ (self.chain_host, self.chain_port),
+ self.request.getpeername())
+ except Exception, e:
+ verbose('Incoming request to %s:%d failed: %s' % (self.chain_host,
+ self.chain_port,
+ repr(e)))
+ return
+
+ verbose('Connected! Tunnel open.')
+ while True:
+ r, w, x = select.select([self.request, chan], [], [])
+ if self.request in r:
+ data = self.request.recv(1024)
+ if len(data) == 0:
+ break
+ chan.send(data)
+ if chan in r:
+ data = chan.recv(1024)
+ if len(data) == 0:
+ break
+ self.request.send(data)
+ chan.close()
+ self.request.close()
+ verbose('Tunnel closed.')
+
+
+def forward_tunnel(local_port, remote_host, remote_port, transport):
+ # this is a little convoluted, but lets me configure things for the Handler
+ # object. (SocketServer doesn't give Handlers any way to access the outer
+ # server normally.)
+ class SubHander (Handler):
+ chain_host = remote_host
+ chain_port = remote_port
+ ssh_transport = transport
+ ForwardServer(('', local_port), SubHander).serve_forever()
+
+def find_default_key_file():
+ filename = os.path.expanduser('~/.ssh/id_rsa')
+ if os.access(filename, os.R_OK):
+ return filename
+ filename = os.path.expanduser('~/ssh/id_rsa')
+ if os.access(filename, os.R_OK):
+ return filename
+ filename = os.path.expanduser('~/.ssh/id_dsa')
+ if os.access(filename, os.R_OK):
+ return filename
+ filename = os.path.expanduser('~/ssh/id_dsa')
+ if os.access(filename, os.R_OK):
+ return filename
+ return ''
+
+def verbose(s):
+ if VERBOSE:
+ print s
+
+
+#####
+
+
+parser = OptionParser(usage='usage: %prog [options] <remote-addr>:<remote-port>',
+ version='%prog 1.0')
+parser.add_option('-q', '--quiet', action='store_false', dest='verbose', default=VERBOSE,
+ help='squelch all informational output')
+parser.add_option('-l', '--local-port', action='store', type='int', dest='port',
+ default=DEFAULT_PORT,
+ help='local port to forward (default: %d)' % DEFAULT_PORT)
+parser.add_option('-r', '--host', action='store', type='string', dest='ssh_host',
+ help='SSH host to tunnel through (required)')
+parser.add_option('-p', '--port', action='store', type='int', dest='ssh_port', default=SSH_PORT,
+ help='SSH port to tunnel through (default: %d)' % SSH_PORT)
+parser.add_option('-u', '--user', action='store', type='string', dest='user',
+ default=getpass.getuser(),
+ help='username for SSH authentication (default: %s)' % getpass.getuser())
+parser.add_option('-K', '--key', action='store', type='string', dest='keyfile',
+ default=find_default_key_file(),
+ help='private key file to use for SSH authentication')
+parser.add_option('', '--no-key', action='store_false', dest='use_key', default=True,
+ help='don\'t look for or use a private key file')
+parser.add_option('-P', '--password', action='store_true', dest='readpass', default=READPASS,
+ help='read password (for key or password auth) from stdin')
+options, args = parser.parse_args()
+
+VERBOSE = options.verbose
+READPASS = options.readpass
+
+
+if len(args) != 1:
+ parser.error('Incorrect number of arguments.')
+remote_host = args[0]
+if ':' not in remote_host:
+ parser.error('Remote port missing.')
+remote_host, remote_port = remote_host.split(':', 1)
+try:
+ remote_port = int(remote_port)
+except:
+ parser.error('Remote port must be a number.')
+
+if not options.ssh_host:
+ parser.error('SSH host is required.')
+if ':' in options.ssh_host:
+ options.ssh_host, options.ssh_port = options.ssh_host.split(':', 1)
+ try:
+ options.ssh_port = int(options.ssh_port)
+ except:
+ parser.error('SSH port must be a number.')
+
+try:
+ host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
+except IOError:
+ try:
+ host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))
+ except IOError:
+ print '*** Unable to open host keys file'
+ host_keys = {}
+
+if not host_keys.has_key(options.ssh_host):
+ print '*** Warning: no host key for %s' % options.ssh_host
+ expected_host_key_type = None
+ expected_host_key = None
+else:
+ expected_host_key_type = host_keys[options.ssh_host].keys()[0]
+ expected_host_key = host_keys[options.ssh_host][expected_host_key_type]
+
+key = None
+password = None
+if options.use_key:
+ try:
+ key = paramiko.RSAKey.from_private_key_file(options.keyfile)
+ except paramiko.PasswordRequiredException:
+ if not READPASS:
+ print '*** Password needed for keyfile (use -P): %s' % options.keyfile
+ sys.exit(1)
+ key_password = getpass.getpass('Enter password for key: ')
+ try:
+ key = paramiko.RSAKey.from_private_key_file(options.keyfile, key_password)
+ except:
+ print '*** Unable to read keyfile: %s' % options.keyfile
+ sys.exit(1)
+ except:
+ pass
+
+if key is None:
+ # try reading a password then
+ if not READPASS:
+ print '*** Either a valid private key or password is required (use -K or -P).'
+ sys.exit(1)
+ password = getpass.getpass('Enter password: ')
+
+verbose('Connecting to ssh host %s:%d ...' % (options.ssh_host, options.ssh_port))
+
+transport = paramiko.Transport((options.ssh_host, options.ssh_port))
+transport.connect(hostkeytype=expected_host_key_type,
+ hostkey=expected_host_key,
+ username=options.user,
+ password=password,
+ pkey=key)
+
+verbose('Now forwarding port %d to %s:%d ...' % (options.port, remote_host, remote_port))
+
+try:
+ forward_tunnel(options.port, remote_host, remote_port, transport)
+except KeyboardInterrupt:
+ print 'Port forwarding stopped.'
+ sys.exit(0)
diff --git a/paramiko/__init__.py b/paramiko/__init__.py
new file mode 100644
index 0000000..0a312cb
--- /dev/null
+++ b/paramiko/__init__.py
@@ -0,0 +1,146 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+I{Paramiko} (a combination of the esperanto words for "paranoid" and "friend")
+is a module for python 2.3 or greater that implements the SSH2 protocol for
+secure (encrypted and authenticated) connections to remote machines. Unlike
+SSL (aka TLS), the SSH2 protocol does not require heirarchical certificates
+signed by a powerful central authority. You may know SSH2 as the protocol that
+replaced C{telnet} and C{rsh} for secure access to remote shells, but the
+protocol also includes the ability to open arbitrary channels to remote
+services across an encrypted tunnel. (This is how C{sftp} works, for example.)
+
+To use this package, pass a socket (or socket-like object) to a L{Transport},
+and use L{start_server <Transport.start_server>} or
+L{start_client <Transport.start_client>} to negoatite
+with the remote host as either a server or client. As a client, you are
+responsible for authenticating using a password or private key, and checking
+the server's host key. I{(Key signature and verification is done by paramiko,
+but you will need to provide private keys and check that the content of a
+public key matches what you expected to see.)} As a server, you are
+responsible for deciding which users, passwords, and keys to allow, and what
+kind of channels to allow.
+
+Once you have finished, either side may request flow-controlled L{Channel}s to
+the other side, which are python objects that act like sockets, but send and
+receive data over the encrypted session.
+
+Paramiko is written entirely in python (no C or platform-dependent code) and is
+released under the GNU Lesser General Public License (LGPL).
+
+Website: U{http://www.lag.net/paramiko/}
+
+@version: 1.5.2 (rhydon)
+@author: Robey Pointer
+@contact: robey@lag.net
+@license: GNU Lesser General Public License (LGPL)
+"""
+
+import sys
+
+if sys.version_info < (2, 2):
+ raise RuntimeError('You need python 2.2 for this module.')
+
+
+__author__ = "Robey Pointer <robey@lag.net>"
+__date__ = "04 Dec 2005"
+__version__ = "1.5.2 (rhydon)"
+__version_info__ = (1, 5, 2)
+__license__ = "GNU Lesser General Public License (LGPL)"
+
+
+import transport, auth_handler, channel, rsakey, dsskey, message
+import ssh_exception, file, packet, agent, server, util
+import sftp_client, sftp_attr, sftp_handle, sftp_server, sftp_si
+
+from transport import randpool, SecurityOptions, Transport
+from auth_handler import AuthHandler
+from channel import Channel, ChannelFile
+from ssh_exception import SSHException, PasswordRequiredException, BadAuthenticationType
+from server import ServerInterface, SubsystemHandler, InteractiveQuery
+from rsakey import RSAKey
+from dsskey import DSSKey
+from sftp import SFTPError, BaseSFTP
+from sftp_client import SFTP, SFTPClient
+from sftp_server import SFTPServer
+from sftp_attr import SFTPAttributes
+from sftp_handle import SFTPHandle
+from sftp_si import SFTPServerInterface
+from sftp_file import SFTPFile
+from message import Message
+from packet import Packetizer
+from file import BufferedFile
+from agent import Agent, AgentKey
+from pkey import PKey
+
+# fix module names for epydoc
+for x in [Transport, SecurityOptions, Channel, SFTPServer, SSHException, \
+ PasswordRequiredException, BadAuthenticationType, ChannelFile, \
+ SubsystemHandler, AuthHandler, RSAKey, DSSKey, SFTPError, \
+ SFTP, SFTPClient, SFTPServer, Message, Packetizer, SFTPAttributes, \
+ SFTPHandle, SFTPServerInterface, BufferedFile, Agent, AgentKey, \
+ PKey, BaseSFTP, SFTPFile, ServerInterface]:
+ x.__module__ = 'paramiko'
+
+from common import AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED, \
+ OPEN_SUCCEEDED, OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED, OPEN_FAILED_CONNECT_FAILED, \
+ OPEN_FAILED_UNKNOWN_CHANNEL_TYPE, OPEN_FAILED_RESOURCE_SHORTAGE
+
+from sftp import SFTP_OK, SFTP_EOF, SFTP_NO_SUCH_FILE, SFTP_PERMISSION_DENIED, SFTP_FAILURE, \
+ SFTP_BAD_MESSAGE, SFTP_NO_CONNECTION, SFTP_CONNECTION_LOST, SFTP_OP_UNSUPPORTED
+
+__all__ = [ 'Transport',
+ 'SecurityOptions',
+ 'SubsystemHandler',
+ 'Channel',
+ 'RSAKey',
+ 'DSSKey',
+ 'Agent',
+ 'Message',
+ 'SSHException',
+ 'PasswordRequiredException',
+ 'BadAuthenticationType',
+ 'SFTP',
+ 'SFTPFile',
+ 'SFTPHandle',
+ 'SFTPClient',
+ 'SFTPServer',
+ 'SFTPError',
+ 'SFTPAttributes',
+ 'SFTPServerInterface'
+ 'ServerInterface',
+ 'BufferedFile',
+ 'Agent',
+ 'AgentKey',
+ 'rsakey',
+ 'dsskey',
+ 'pkey',
+ 'message',
+ 'transport',
+ 'sftp',
+ 'sftp_client',
+ 'sftp_server',
+ 'sftp_attr',
+ 'sftp_file',
+ 'sftp_si',
+ 'sftp_handle',
+ 'server',
+ 'file',
+ 'agent',
+ 'util' ]
diff --git a/paramiko/agent.py b/paramiko/agent.py
new file mode 100644
index 0000000..3555512
--- /dev/null
+++ b/paramiko/agent.py
@@ -0,0 +1,138 @@
+# Copyright (C) 2003-2005 John Rochester <john@jrochester.org>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+SSH Agent interface for Unix clients.
+"""
+
+import os
+import socket
+import struct
+import sys
+
+from paramiko.ssh_exception import SSHException
+from paramiko.message import Message
+from paramiko.pkey import PKey
+
+
+SSH2_AGENTC_REQUEST_IDENTITIES, SSH2_AGENT_IDENTITIES_ANSWER, \
+ SSH2_AGENTC_SIGN_REQUEST, SSH2_AGENT_SIGN_RESPONSE = range(11, 15)
+
+
+class Agent:
+ """
+ Client interface for using private keys from an SSH agent running on the
+ local machine. If an SSH agent is running, this class can be used to
+ connect to it and retreive L{PKey} objects which can be used when
+ attempting to authenticate to remote SSH servers.
+
+ Because the SSH agent protocol uses environment variables and unix-domain
+ sockets, this probably doesn't work on Windows. It does work on most
+ posix platforms though (Linux and MacOS X, for example).
+ """
+
+ def __init__(self):
+ """
+ Open a session with the local machine's SSH agent, if one is running.
+ If no agent is running, initialization will succeed, but L{get_keys}
+ will return an empty tuple.
+
+ @raise SSHException: if an SSH agent is found, but speaks an
+ incompatible protocol
+ """
+ if ('SSH_AUTH_SOCK' in os.environ) and (sys.platform != 'win32'):
+ conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ conn.connect(os.environ['SSH_AUTH_SOCK'])
+ self.conn = conn
+ type, result = self._send_message(chr(SSH2_AGENTC_REQUEST_IDENTITIES))
+ if type != SSH2_AGENT_IDENTITIES_ANSWER:
+ raise SSHException('could not get keys from ssh-agent')
+ keys = []
+ for i in range(result.get_int()):
+ keys.append(AgentKey(self, result.get_string()))
+ result.get_string()
+ self.keys = tuple(keys)
+ else:
+ self.keys = ()
+
+ def close(self):
+ """
+ Close the SSH agent connection.
+ """
+ self.conn.close()
+ self.conn = None
+ self.keys = ()
+
+ def get_keys(self):
+ """
+ Return the list of keys available through the SSH agent, if any. If
+ no SSH agent was running (or it couldn't be contacted), an empty list
+ will be returned.
+
+ @return: a list of keys available on the SSH agent
+ @rtype: tuple of L{AgentKey}
+ """
+ return self.keys
+
+ def _send_message(self, msg):
+ msg = str(msg)
+ self.conn.send(struct.pack('>I', len(msg)) + msg)
+ l = self._read_all(4)
+ msg = Message(self._read_all(struct.unpack('>I', l)[0]))
+ return ord(msg.get_byte()), msg
+
+ def _read_all(self, wanted):
+ result = self.conn.recv(wanted)
+ while len(result) < wanted:
+ if len(result) == 0:
+ raise SSHException('lost ssh-agent')
+ extra = self.conn.recv(wanted - len(result))
+ if len(extra) == 0:
+ raise SSHException('lost ssh-agent')
+ result += extra
+ return result
+
+
+class AgentKey(PKey):
+ """
+ Private key held in a local SSH agent. This type of key can be used for
+ authenticating to a remote server (signing). Most other key operations
+ work as expected.
+ """
+
+ def __init__(self, agent, blob):
+ self.agent = agent
+ self.blob = blob
+ self.name = Message(blob).get_string()
+
+ def __str__(self):
+ return self.blob
+
+ def get_name(self):
+ return self.name
+
+ def sign_ssh_data(self, randpool, data):
+ msg = Message()
+ msg.add_byte(chr(SSH2_AGENTC_SIGN_REQUEST))
+ msg.add_string(self.blob)
+ msg.add_string(data)
+ msg.add_int(0)
+ type, result = self.agent._send_message(msg)
+ if type != SSH2_AGENT_SIGN_RESPONSE:
+ raise SSHException('key cannot be used for signing')
+ return result.get_string()
diff --git a/paramiko/auth_handler.py b/paramiko/auth_handler.py
new file mode 100644
index 0000000..59aa376
--- /dev/null
+++ b/paramiko/auth_handler.py
@@ -0,0 +1,410 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+L{AuthHandler}
+"""
+
+import threading
+
+# this helps freezing utils
+import encodings.utf_8
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.message import Message
+from paramiko.ssh_exception import SSHException, BadAuthenticationType, PartialAuthentication
+from paramiko.server import InteractiveQuery
+
+
+class AuthHandler (object):
+ """
+ Internal class to handle the mechanics of authentication.
+ """
+
+ def __init__(self, transport):
+ self.transport = transport
+ self.username = None
+ self.authenticated = False
+ self.auth_event = None
+ self.auth_method = ''
+ self.password = None
+ self.private_key = None
+ # for server mode:
+ self.auth_username = None
+ self.auth_fail_count = 0
+
+ def is_authenticated(self):
+ return self.authenticated
+
+ def get_username(self):
+ if self.transport.server_mode:
+ return self.auth_username
+ else:
+ return self.username
+
+ def auth_none(self, username, event):
+ self.transport.lock.acquire()
+ try:
+ self.auth_event = event
+ self.auth_method = 'none'
+ self.username = username
+ self._request_auth()
+ finally:
+ self.transport.lock.release()
+
+ def auth_publickey(self, username, key, event):
+ self.transport.lock.acquire()
+ try:
+ self.auth_event = event
+ self.auth_method = 'publickey'
+ self.username = username
+ self.private_key = key
+ self._request_auth()
+ finally:
+ self.transport.lock.release()
+
+ def auth_password(self, username, password, event):
+ self.transport.lock.acquire()
+ try:
+ self.auth_event = event
+ self.auth_method = 'password'
+ self.username = username
+ self.password = password
+ self._request_auth()
+ finally:
+ self.transport.lock.release()
+
+ def auth_interactive(self, username, handler, event, submethods=''):
+ """
+ response_list = handler(title, instructions, prompt_list)
+ """
+ self.transport.lock.acquire()
+ try:
+ self.auth_event = event
+ self.auth_method = 'keyboard-interactive'
+ self.username = username
+ self.interactive_handler = handler
+ self.submethods = submethods
+ self._request_auth()
+ finally:
+ self.transport.lock.release()
+
+ def abort(self):
+ if self.auth_event is not None:
+ self.auth_event.set()
+
+
+ ### internals...
+
+
+ def _request_auth(self):
+ m = Message()
+ m.add_byte(chr(MSG_SERVICE_REQUEST))
+ m.add_string('ssh-userauth')
+ self.transport._send_message(m)
+
+ def _disconnect_service_not_available(self):
+ m = Message()
+ m.add_byte(chr(MSG_DISCONNECT))
+ m.add_int(DISCONNECT_SERVICE_NOT_AVAILABLE)
+ m.add_string('Service not available')
+ m.add_string('en')
+ self.transport._send_message(m)
+ self.transport.close()
+
+ def _disconnect_no_more_auth(self):
+ m = Message()
+ m.add_byte(chr(MSG_DISCONNECT))
+ m.add_int(DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE)
+ m.add_string('No more auth methods available')
+ m.add_string('en')
+ self.transport._send_message(m)
+ self.transport.close()
+
+ def _get_session_blob(self, key, service, username):
+ m = Message()
+ m.add_string(self.transport.session_id)
+ m.add_byte(chr(MSG_USERAUTH_REQUEST))
+ m.add_string(username)
+ m.add_string(service)
+ m.add_string('publickey')
+ m.add_boolean(1)
+ m.add_string(key.get_name())
+ m.add_string(str(key))
+ return str(m)
+
+ def wait_for_response(self, event):
+ while True:
+ event.wait(0.1)
+ if not self.transport.is_active():
+ e = self.transport.get_exception()
+ if e is None:
+ e = SSHException('Authentication failed.')
+ raise e
+ if event.isSet():
+ break
+ if not self.is_authenticated():
+ e = self.transport.get_exception()
+ if e is None:
+ e = SSHException('Authentication failed.')
+ # this is horrible. python Exception isn't yet descended from
+ # object, so type(e) won't work. :(
+ if issubclass(e.__class__, PartialAuthentication):
+ return e.allowed_types
+ raise e
+ return []
+
+ def _parse_service_request(self, m):
+ service = m.get_string()
+ if self.transport.server_mode and (service == 'ssh-userauth'):
+ # accepted
+ m = Message()
+ m.add_byte(chr(MSG_SERVICE_ACCEPT))
+ m.add_string(service)
+ self.transport._send_message(m)
+ return
+ # dunno this one
+ self._disconnect_service_not_available()
+
+ def _parse_service_accept(self, m):
+ service = m.get_string()
+ if service == 'ssh-userauth':
+ self.transport._log(DEBUG, 'userauth is OK')
+ m = Message()
+ m.add_byte(chr(MSG_USERAUTH_REQUEST))
+ m.add_string(self.username)
+ m.add_string('ssh-connection')
+ m.add_string(self.auth_method)
+ if self.auth_method == 'password':
+ m.add_boolean(False)
+ m.add_string(self.password.encode('UTF-8'))
+ elif self.auth_method == 'publickey':
+ m.add_boolean(True)
+ m.add_string(self.private_key.get_name())
+ m.add_string(str(self.private_key))
+ blob = self._get_session_blob(self.private_key, 'ssh-connection', self.username)
+ sig = self.private_key.sign_ssh_data(self.transport.randpool, blob)
+ m.add_string(str(sig))
+ elif self.auth_method == 'keyboard-interactive':
+ m.add_string('')
+ m.add_string(self.submethods)
+ elif self.auth_method == 'none':
+ pass
+ else:
+ raise SSHException('Unknown auth method "%s"' % self.auth_method)
+ self.transport._send_message(m)
+ else:
+ self.transport._log(DEBUG, 'Service request "%s" accepted (?)' % service)
+
+ def _send_auth_result(self, username, method, result):
+ # okay, send result
+ m = Message()
+ if result == AUTH_SUCCESSFUL:
+ self.transport._log(INFO, 'Auth granted (%s).' % method)
+ m.add_byte(chr(MSG_USERAUTH_SUCCESS))
+ self.authenticated = True
+ else:
+ self.transport._log(INFO, 'Auth rejected (%s).' % method)
+ m.add_byte(chr(MSG_USERAUTH_FAILURE))
+ m.add_string(self.transport.server_object.get_allowed_auths(username))
+ if result == AUTH_PARTIALLY_SUCCESSFUL:
+ m.add_boolean(1)
+ else:
+ m.add_boolean(0)
+ self.auth_fail_count += 1
+ self.transport._send_message(m)
+ if self.auth_fail_count >= 10:
+ self._disconnect_no_more_auth()
+ if result == AUTH_SUCCESSFUL:
+ self.transport._auth_trigger()
+
+ def _interactive_query(self, q):
+ # make interactive query instead of response
+ m = Message()
+ m.add_byte(chr(MSG_USERAUTH_INFO_REQUEST))
+ m.add_string(q.name)
+ m.add_string(q.instructions)
+ m.add_string('')
+ m.add_int(len(q.prompts))
+ for p in q.prompts:
+ m.add_string(p[0])
+ m.add_boolean(p[1])
+ self.transport._send_message(m)
+
+ def _parse_userauth_request(self, m):
+ if not self.transport.server_mode:
+ # er, uh... what?
+ m = Message()
+ m.add_byte(chr(MSG_USERAUTH_FAILURE))
+ m.add_string('none')
+ m.add_boolean(0)
+ self.transport._send_message(m)
+ return
+ if self.authenticated:
+ # ignore
+ return
+ username = m.get_string()
+ service = m.get_string()
+ method = m.get_string()
+ self.transport._log(DEBUG, 'Auth request (type=%s) service=%s, username=%s' % (method, service, username))
+ if service != 'ssh-connection':
+ self._disconnect_service_not_available()
+ return
+ if (self.auth_username is not None) and (self.auth_username != username):
+ self.transport._log(WARNING, 'Auth rejected because the client attempted to change username in mid-flight')
+ self._disconnect_no_more_auth()
+ return
+ self.auth_username = username
+
+ if method == 'none':
+ result = self.transport.server_object.check_auth_none(username)
+ elif method == 'password':
+ changereq = m.get_boolean()
+ password = m.get_string().decode('UTF-8', 'replace')
+ if changereq:
+ # always treated as failure, since we don't support changing passwords, but collect
+ # the list of valid auth types from the callback anyway
+ self.transport._log(DEBUG, 'Auth request to change passwords (rejected)')
+ newpassword = m.get_string().decode('UTF-8', 'replace')
+ result = AUTH_FAILED
+ else:
+ result = self.transport.server_object.check_auth_password(username, password)
+ elif method == 'publickey':
+ sig_attached = m.get_boolean()
+ keytype = m.get_string()
+ keyblob = m.get_string()
+ try:
+ key = self.transport._key_info[keytype](Message(keyblob))
+ except SSHException, e:
+ self.transport._log(INFO, 'Auth rejected: public key: %s' % str(e))
+ key = None
+ except:
+ self.transport._log(INFO, 'Auth rejected: unsupported or mangled public key')
+ key = None
+ if key is None:
+ self._disconnect_no_more_auth()
+ return
+ # first check if this key is okay... if not, we can skip the verify
+ result = self.transport.server_object.check_auth_publickey(username, key)
+ if result != AUTH_FAILED:
+ # key is okay, verify it
+ if not sig_attached:
+ # client wants to know if this key is acceptable, before it
+ # signs anything... send special "ok" message
+ m = Message()
+ m.add_byte(chr(MSG_USERAUTH_PK_OK))
+ m.add_string(keytype)
+ m.add_string(keyblob)
+ self.transport._send_message(m)
+ return
+ sig = Message(m.get_string())
+ blob = self._get_session_blob(key, service, username)
+ if not key.verify_ssh_sig(blob, sig):
+ self.transport._log(INFO, 'Auth rejected: invalid signature')
+ result = AUTH_FAILED
+ elif method == 'keyboard-interactive':
+ lang = m.get_string()
+ submethods = m.get_string()
+ result = self.transport.server_object.check_auth_interactive(username, submethods)
+ if isinstance(result, InteractiveQuery):
+ # make interactive query instead of response
+ self._interactive_query(result)
+ return
+ else:
+ result = self.transport.server_object.check_auth_none(username)
+ # okay, send result
+ self._send_auth_result(username, method, result)
+
+ def _parse_userauth_success(self, m):
+ self.transport._log(INFO, 'Authentication successful!')
+ self.authenticated = True
+ self.transport._auth_trigger()
+ if self.auth_event != None:
+ self.auth_event.set()
+
+ def _parse_userauth_failure(self, m):
+ authlist = m.get_list()
+ partial = m.get_boolean()
+ if partial:
+ self.transport._log(INFO, 'Authentication continues...')
+ self.transport._log(DEBUG, 'Methods: ' + str(authlist))
+ self.transport.saved_exception = PartialAuthentication(authlist)
+ elif self.auth_method not in authlist:
+ self.transport._log(INFO, 'Authentication type not permitted.')
+ self.transport._log(DEBUG, 'Allowed methods: ' + str(authlist))
+ self.transport.saved_exception = BadAuthenticationType('Bad authentication type', authlist)
+ else:
+ self.transport._log(INFO, 'Authentication failed.')
+ self.authenticated = False
+ self.username = None
+ if self.auth_event != None:
+ self.auth_event.set()
+
+ def _parse_userauth_banner(self, m):
+ banner = m.get_string()
+ lang = m.get_string()
+ self.transport._log(INFO, 'Auth banner: ' + banner)
+ # who cares.
+
+ def _parse_userauth_info_request(self, m):
+ if self.auth_method != 'keyboard-interactive':
+ raise SSHException('Illegal info request from server')
+ title = m.get_string()
+ instructions = m.get_string()
+ m.get_string() # lang
+ prompts = m.get_int()
+ prompt_list = []
+ for i in range(prompts):
+ prompt_list.append((m.get_string(), m.get_boolean()))
+ response_list = self.interactive_handler(title, instructions, prompt_list)
+
+ m = Message()
+ m.add_byte(chr(MSG_USERAUTH_INFO_RESPONSE))
+ m.add_int(len(response_list))
+ for r in response_list:
+ m.add_string(r)
+ self.transport._send_message(m)
+
+ def _parse_userauth_info_response(self, m):
+ if not self.transport.server_mode:
+ raise SSHException('Illegal info response from server')
+ n = m.get_int()
+ responses = []
+ for i in range(n):
+ responses.append(m.get_string())
+ result = self.transport.server_object.check_auth_interactive_response(responses)
+ if isinstance(type(result), InteractiveQuery):
+ # make interactive query instead of response
+ self._interactive_query(result)
+ return
+ self._send_auth_result(self.auth_username, 'keyboard-interactive', result)
+
+
+ _handler_table = {
+ MSG_SERVICE_REQUEST: _parse_service_request,
+ MSG_SERVICE_ACCEPT: _parse_service_accept,
+ MSG_USERAUTH_REQUEST: _parse_userauth_request,
+ MSG_USERAUTH_SUCCESS: _parse_userauth_success,
+ MSG_USERAUTH_FAILURE: _parse_userauth_failure,
+ MSG_USERAUTH_BANNER: _parse_userauth_banner,
+ MSG_USERAUTH_INFO_REQUEST: _parse_userauth_info_request,
+ MSG_USERAUTH_INFO_RESPONSE: _parse_userauth_info_response,
+ }
+
+
diff --git a/paramiko/ber.py b/paramiko/ber.py
new file mode 100644
index 0000000..6a7823d
--- /dev/null
+++ b/paramiko/ber.py
@@ -0,0 +1,128 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+import struct
+import util
+
+
+class BERException (Exception):
+ pass
+
+
+class BER(object):
+ """
+ Robey's tiny little attempt at a BER decoder.
+ """
+
+ def __init__(self, content=''):
+ self.content = content
+ self.idx = 0
+
+ def __str__(self):
+ return self.content
+
+ def __repr__(self):
+ return 'BER(\'' + repr(self.content) + '\')'
+
+ def decode(self):
+ return self.decode_next()
+
+ def decode_next(self):
+ if self.idx >= len(self.content):
+ return None
+ ident = ord(self.content[self.idx])
+ self.idx += 1
+ if (ident & 31) == 31:
+ # identifier > 30
+ ident = 0
+ while self.idx < len(self.content):
+ t = ord(self.content[self.idx])
+ self.idx += 1
+ ident = (ident << 7) | (t & 0x7f)
+ if not (t & 0x80):
+ break
+ if self.idx >= len(self.content):
+ return None
+ # now fetch length
+ size = ord(self.content[self.idx])
+ self.idx += 1
+ if size & 0x80:
+ # more complimicated...
+ # FIXME: theoretically should handle indefinite-length (0x80)
+ t = size & 0x7f
+ if self.idx + t > len(self.content):
+ return None
+ size = util.inflate_long(self.content[self.idx : self.idx + t], True)
+ self.idx += t
+ if self.idx + size > len(self.content):
+ # can't fit
+ return None
+ data = self.content[self.idx : self.idx + size]
+ self.idx += size
+ # now switch on id
+ if ident == 0x30:
+ # sequence
+ return self.decode_sequence(data)
+ elif ident == 2:
+ # int
+ return util.inflate_long(data)
+ else:
+ # 1: boolean (00 false, otherwise true)
+ raise BERException('Unknown ber encoding type %d (robey is lazy)' % ident)
+
+ def decode_sequence(data):
+ out = []
+ b = BER(data)
+ while True:
+ x = b.decode_next()
+ if x is None:
+ return out
+ out.append(x)
+ decode_sequence = staticmethod(decode_sequence)
+
+ def encode_tlv(self, ident, val):
+ # no need to support ident > 31 here
+ self.content += chr(ident)
+ if len(val) > 0x7f:
+ lenstr = util.deflate_long(len(val))
+ self.content += chr(0x80 + len(lenstr)) + lenstr
+ else:
+ self.content += chr(len(val))
+ self.content += val
+
+ def encode(self, x):
+ if type(x) is bool:
+ if x:
+ self.encode_tlv(1, '\xff')
+ else:
+ self.encode_tlv(1, '\x00')
+ elif (type(x) is int) or (type(x) is long):
+ self.encode_tlv(2, util.deflate_long(x))
+ elif type(x) is str:
+ self.encode_tlv(4, x)
+ elif (type(x) is list) or (type(x) is tuple):
+ self.encode_tlv(0x30, self.encode_sequence(x))
+ else:
+ raise BERException('Unknown type for encoding: %s' % repr(type(x)))
+
+ def encode_sequence(data):
+ b = BER()
+ for item in data:
+ b.encode(item)
+ return str(b)
+ encode_sequence = staticmethod(encode_sequence)
diff --git a/paramiko/channel.py b/paramiko/channel.py
new file mode 100644
index 0000000..8a00233
--- /dev/null
+++ b/paramiko/channel.py
@@ -0,0 +1,1174 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Abstraction for an SSH2 channel.
+"""
+
+import sys
+import time
+import threading
+import socket
+import os
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.message import Message
+from paramiko.ssh_exception import SSHException
+from paramiko.file import BufferedFile
+from paramiko import pipe
+
+
+class Channel (object):
+ """
+ A secure tunnel across an SSH L{Transport}. A Channel is meant to behave
+ like a socket, and has an API that should be indistinguishable from the
+ python socket API.
+
+ Because SSH2 has a windowing kind of flow control, if you stop reading data
+ from a Channel and its buffer fills up, the server will be unable to send
+ you any more data until you read some of it. (This won't affect other
+ channels on the same transport -- all channels on a single transport are
+ flow-controlled independently.) Similarly, if the server isn't reading
+ data you send, calls to L{send} may block, unless you set a timeout. This
+ is exactly like a normal network socket, so it shouldn't be too surprising.
+ """
+
+ # lower bound on the max packet size we'll accept from the remote host
+ MIN_PACKET_SIZE = 1024
+
+ def __init__(self, chanid):
+ """
+ Create a new channel. The channel is not associated with any
+ particular session or L{Transport} until the Transport attaches it.
+ Normally you would only call this method from the constructor of a
+ subclass of L{Channel}.
+
+ @param chanid: the ID of this channel, as passed by an existing
+ L{Transport}.
+ @type chanid: int
+ """
+ self.chanid = chanid
+ self.remote_chanid = 0
+ self.transport = None
+ self.active = False
+ self.eof_received = 0
+ self.eof_sent = 0
+ self.in_buffer = ''
+ self.in_stderr_buffer = ''
+ self.timeout = None
+ self.closed = False
+ self.ultra_debug = False
+ self.lock = threading.Lock()
+ self.in_buffer_cv = threading.Condition(self.lock)
+ self.in_stderr_buffer_cv = threading.Condition(self.lock)
+ self.out_buffer_cv = threading.Condition(self.lock)
+ self.in_window_size = 0
+ self.out_window_size = 0
+ self.in_max_packet_size = 0
+ self.out_max_packet_size = 0
+ self.in_window_threshold = 0
+ self.in_window_sofar = 0
+ self.status_event = threading.Event()
+ self.name = str(chanid)
+ self.logger = util.get_logger('paramiko.chan.' + str(chanid))
+ self.pipe = None
+ self.event = threading.Event()
+ self.combine_stderr = False
+ self.exit_status = -1
+
+ def __del__(self):
+ self.close()
+
+ def __repr__(self):
+ """
+ Return a string representation of this object, for debugging.
+
+ @rtype: str
+ """
+ out = '<paramiko.Channel %d' % self.chanid
+ if self.closed:
+ out += ' (closed)'
+ elif self.active:
+ if self.eof_received:
+ out += ' (EOF received)'
+ if self.eof_sent:
+ out += ' (EOF sent)'
+ out += ' (open) window=%d' % (self.out_window_size)
+ if len(self.in_buffer) > 0:
+ out += ' in-buffer=%d' % (len(self.in_buffer),)
+ out += ' -> ' + repr(self.transport)
+ out += '>'
+ return out
+
+ def get_pty(self, term='vt100', width=80, height=24):
+ """
+ Request a pseudo-terminal from the server. This is usually used right
+ after creating a client channel, to ask the server to provide some
+ basic terminal semantics for a shell invoked with L{invoke_shell}.
+ It isn't necessary (or desirable) to call this method if you're going
+ to exectue a single command with L{exec_command}.
+
+ @param term: the terminal type to emulate (for example, C{'vt100'}).
+ @type term: str
+ @param width: width (in characters) of the terminal screen
+ @type width: int
+ @param height: height (in characters) of the terminal screen
+ @type height: int
+ @return: C{True} if the operation succeeded; C{False} if not.
+ @rtype: bool
+ """
+ if self.closed or self.eof_received or self.eof_sent or not self.active:
+ raise SSHException('Channel is not open')
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_REQUEST))
+ m.add_int(self.remote_chanid)
+ m.add_string('pty-req')
+ m.add_boolean(True)
+ m.add_string(term)
+ m.add_int(width)
+ m.add_int(height)
+ # pixel height, width (usually useless)
+ m.add_int(0).add_int(0)
+ m.add_string('')
+ self.event.clear()
+ self.transport._send_user_message(m)
+ while True:
+ self.event.wait(0.1)
+ if self.closed:
+ return False
+ if self.event.isSet():
+ return True
+
+ def invoke_shell(self):
+ """
+ Request an interactive shell session on this channel. If the server
+ allows it, the channel will then be directly connected to the stdin,
+ stdout, and stderr of the shell.
+
+ Normally you would call L{get_pty} before this, in which case the
+ shell will operate through the pty, and the channel will be connected
+ to the stdin and stdout of the pty.
+
+ When the shell exits, the channel will be closed and can't be reused.
+ You must open a new channel if you wish to open another shell.
+
+ @return: C{True} if the operation succeeded; C{False} if not.
+ @rtype: bool
+ """
+ if self.closed or self.eof_received or self.eof_sent or not self.active:
+ raise SSHException('Channel is not open')
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_REQUEST))
+ m.add_int(self.remote_chanid)
+ m.add_string('shell')
+ m.add_boolean(1)
+ self.event.clear()
+ self.transport._send_user_message(m)
+ while True:
+ self.event.wait(0.1)
+ if self.closed:
+ return False
+ if self.event.isSet():
+ return True
+
+ def exec_command(self, command):
+ """
+ Execute a command on the server. If the server allows it, the channel
+ will then be directly connected to the stdin, stdout, and stderr of
+ the command being executed.
+
+ When the command finishes executing, the channel will be closed and
+ can't be reused. You must open a new channel if you wish to execute
+ another command.
+
+ @param command: a shell command to execute.
+ @type command: str
+ @return: C{True} if the operation succeeded; C{False} if not.
+ @rtype: bool
+ """
+ if self.closed or self.eof_received or self.eof_sent or not self.active:
+ raise SSHException('Channel is not open')
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_REQUEST))
+ m.add_int(self.remote_chanid)
+ m.add_string('exec')
+ m.add_boolean(1)
+ m.add_string(command)
+ self.event.clear()
+ self.transport._send_user_message(m)
+ while True:
+ self.event.wait(0.1)
+ if self.closed:
+ return False
+ if self.event.isSet():
+ return True
+
+ def invoke_subsystem(self, subsystem):
+ """
+ Request a subsystem on the server (for example, C{sftp}). If the
+ server allows it, the channel will then be directly connected to the
+ requested subsystem.
+
+ When the subsystem finishes, the channel will be closed and can't be
+ reused.
+
+ @param subsystem: name of the subsystem being requested.
+ @type subsystem: str
+ @return: C{True} if the operation succeeded; C{False} if not.
+ @rtype: bool
+ """
+ if self.closed or self.eof_received or self.eof_sent or not self.active:
+ raise SSHException('Channel is not open')
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_REQUEST))
+ m.add_int(self.remote_chanid)
+ m.add_string('subsystem')
+ m.add_boolean(1)
+ m.add_string(subsystem)
+ self.event.clear()
+ self.transport._send_user_message(m)
+ while True:
+ self.event.wait(0.1)
+ if self.closed:
+ return False
+ if self.event.isSet():
+ return True
+
+ def resize_pty(self, width=80, height=24):
+ """
+ Resize the pseudo-terminal. This can be used to change the width and
+ height of the terminal emulation created in a previous L{get_pty} call.
+
+ @param width: new width (in characters) of the terminal screen
+ @type width: int
+ @param height: new height (in characters) of the terminal screen
+ @type height: int
+ @return: C{True} if the operation succeeded; C{False} if not.
+ @rtype: bool
+ """
+ if self.closed or self.eof_received or self.eof_sent or not self.active:
+ raise SSHException('Channel is not open')
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_REQUEST))
+ m.add_int(self.remote_chanid)
+ m.add_string('window-change')
+ m.add_boolean(1)
+ m.add_int(width)
+ m.add_int(height)
+ m.add_int(0).add_int(0)
+ self.event.clear()
+ self.transport._send_user_message(m)
+ while True:
+ self.event.wait(0.1)
+ if self.closed:
+ return False
+ if self.event.isSet():
+ return True
+
+ def recv_exit_status(self):
+ """
+ Return the exit status from the process on the server. This is
+ mostly useful for retrieving the reults of an L{exec_command}.
+ If the command hasn't finished yet, this method will wait until
+ it does, or until the channel is closed. If no exit status is
+ provided by the server, -1 is returned.
+
+ @return: the exit code of the process on the server.
+ @rtype: int
+
+ @since: 1.2
+ """
+ while True:
+ if self.closed or self.status_event.isSet():
+ return self.exit_status
+ self.status_event.wait(0.1)
+
+ def send_exit_status(self, status):
+ """
+ Send the exit status of an executed command to the client. (This
+ really only makes sense in server mode.) Many clients expect to
+ get some sort of status code back from an executed command after
+ it completes.
+
+ @param status: the exit code of the process
+ @type status: int
+
+ @since: 1.2
+ """
+ # in many cases, the channel will not still be open here.
+ # that's fine.
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_REQUEST))
+ m.add_int(self.remote_chanid)
+ m.add_string('exit-status')
+ m.add_boolean(0)
+ m.add_int(status)
+ self.transport._send_user_message(m)
+
+ def get_transport(self):
+ """
+ Return the L{Transport} associated with this channel.
+
+ @return: the L{Transport} that was used to create this channel.
+ @rtype: L{Transport}
+ """
+ return self.transport
+
+ def set_name(self, name):
+ """
+ Set a name for this channel. Currently it's only used to set the name
+ of the log level used for debugging. The name can be fetched with the
+ L{get_name} method.
+
+ @param name: new channel name.
+ @type name: str
+ """
+ self.name = name
+ self.logger = util.get_logger(self.transport.get_log_channel() + '.' + self.name)
+
+ def get_name(self):
+ """
+ Get the name of this channel that was previously set by L{set_name}.
+
+ @return: the name of this channel.
+ @rtype: str
+ """
+ return self.name
+
+ def get_id(self):
+ """
+ Return the ID # for this channel. The channel ID is unique across
+ a L{Transport} and usually a small number. It's also the number
+ passed to L{ServerInterface.check_channel_request} when determining
+ whether to accept a channel request in server mode.
+
+ @return: the ID of this channel.
+ @rtype: int
+
+ @since: ivysaur
+ """
+ return self.chanid
+
+ def set_combine_stderr(self, combine):
+ """
+ Set whether stderr should be combined into stdout on this channel.
+ The default is C{False}, but in some cases it may be convenient to
+ have both streams combined.
+
+ If this is C{False}, and L{exec_command} is called (or C{invoke_shell}
+ with no pty), output to stderr will not show up through the L{recv}
+ and L{recv_ready} calls. You will have to use L{recv_stderr} and
+ L{recv_stderr_ready} to get stderr output.
+
+ If this is C{True}, data will never show up via L{recv_stderr} or
+ L{recv_stderr_ready}.
+
+ @param combine: C{True} if stderr output should be combined into
+ stdout on this channel.
+ @type combine: bool
+ @return: previous setting.
+ @rtype: bool
+
+ @since: 1.1
+ """
+ data = ''
+ self.lock.acquire()
+ try:
+ old = self.combine_stderr
+ self.combine_stderr = combine
+ if combine and not old:
+ # copy old stderr buffer into primary buffer
+ data = self.in_stderr_buffer
+ self.in_stderr_buffer = ''
+ finally:
+ self.lock.release()
+ if len(data) > 0:
+ self._feed(data)
+ return old
+
+
+ ### socket API
+
+
+ def settimeout(self, timeout):
+ """
+ Set a timeout on blocking read/write operations. The C{timeout}
+ argument can be a nonnegative float expressing seconds, or C{None}. If
+ a float is given, subsequent channel read/write operations will raise
+ a timeout exception if the timeout period value has elapsed before the
+ operation has completed. Setting a timeout of C{None} disables
+ timeouts on socket operations.
+
+ C{chan.settimeout(0.0)} is equivalent to C{chan.setblocking(0)};
+ C{chan.settimeout(None)} is equivalent to C{chan.setblocking(1)}.
+
+ @param timeout: seconds to wait for a pending read/write operation
+ before raising C{socket.timeout}, or C{None} for no timeout.
+ @type timeout: float
+ """
+ self.timeout = timeout
+
+ def gettimeout(self):
+ """
+ Returns the timeout in seconds (as a float) associated with socket
+ operations, or C{None} if no timeout is set. This reflects the last
+ call to L{setblocking} or L{settimeout}.
+
+ @return: timeout in seconds, or C{None}.
+ @rtype: float
+ """
+ return self.timeout
+
+ def setblocking(self, blocking):
+ """
+ Set blocking or non-blocking mode of the channel: if C{blocking} is 0,
+ the channel is set to non-blocking mode; otherwise it's set to blocking
+ mode. Initially all channels are in blocking mode.
+
+ In non-blocking mode, if a L{recv} call doesn't find any data, or if a
+ L{send} call can't immediately dispose of the data, an error exception
+ is raised. In blocking mode, the calls block until they can proceed.
+
+ C{chan.setblocking(0)} is equivalent to C{chan.settimeout(0)};
+ C{chan.setblocking(1)} is equivalent to C{chan.settimeout(None)}.
+
+ @param blocking: 0 to set non-blocking mode; non-0 to set blocking
+ mode.
+ @type blocking: int
+ """
+ if blocking:
+ self.settimeout(None)
+ else:
+ self.settimeout(0.0)
+
+ def close(self):
+ """
+ Close the channel. All future read/write operations on the channel
+ will fail. The remote end will receive no more data (after queued data
+ is flushed). Channels are automatically closed when their L{Transport}
+ is closed or when they are garbage collected.
+ """
+ self.lock.acquire()
+ try:
+ if not self.active or self.closed:
+ return
+ msgs = self._close_internal()
+
+ # only close the pipe when the user explicitly closes the channel.
+ # otherwise they will get unpleasant surprises.
+ if self.pipe is not None:
+ self.pipe.close()
+ self.pipe = None
+ finally:
+ self.lock.release()
+ for m in msgs:
+ if m is not None:
+ self.transport._send_user_message(m)
+
+ def recv_ready(self):
+ """
+ Returns true if data is buffered and ready to be read from this
+ channel. A C{False} result does not mean that the channel has closed;
+ it means you may need to wait before more data arrives.
+
+ @return: C{True} if a L{recv} call on this channel would immediately
+ return at least one byte; C{False} otherwise.
+ @rtype: boolean
+ """
+ self.lock.acquire()
+ try:
+ if len(self.in_buffer) == 0:
+ return False
+ return True
+ finally:
+ self.lock.release()
+
+ def recv(self, nbytes):
+ """
+ Receive data from the channel. The return value is a string
+ representing the data received. The maximum amount of data to be
+ received at once is specified by C{nbytes}. If a string of length zero
+ is returned, the channel stream has closed.
+
+ @param nbytes: maximum number of bytes to read.
+ @type nbytes: int
+ @return: data.
+ @rtype: str
+
+ @raise socket.timeout: if no data is ready before the timeout set by
+ L{settimeout}.
+ """
+ out = ''
+ self.lock.acquire()
+ try:
+ if len(self.in_buffer) == 0:
+ if self.closed or self.eof_received:
+ return out
+ # should we block?
+ if self.timeout == 0.0:
+ raise socket.timeout()
+ # loop here in case we get woken up but a different thread has grabbed everything in the buffer
+ timeout = self.timeout
+ while (len(self.in_buffer) == 0) and not self.closed and not self.eof_received:
+ then = time.time()
+ self.in_buffer_cv.wait(timeout)
+ if timeout != None:
+ timeout -= time.time() - then
+ if timeout <= 0.0:
+ raise socket.timeout()
+ # something in the buffer and we have the lock
+ if len(self.in_buffer) <= nbytes:
+ out = self.in_buffer
+ self.in_buffer = ''
+ if self.pipe is not None:
+ # clear the pipe, since no more data is buffered
+ self.pipe.clear()
+ else:
+ out = self.in_buffer[:nbytes]
+ self.in_buffer = self.in_buffer[nbytes:]
+ ack = self._check_add_window(len(out))
+ finally:
+ self.lock.release()
+
+ # no need to hold the channel lock when sending this
+ if ack > 0:
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_WINDOW_ADJUST))
+ m.add_int(self.remote_chanid)
+ m.add_int(ack)
+ self.transport._send_user_message(m)
+
+ return out
+
+ def recv_stderr_ready(self):
+ """
+ Returns true if data is buffered and ready to be read from this
+ channel's stderr stream. Only channels using L{exec_command} or
+ L{invoke_shell} without a pty will ever have data on the stderr
+ stream.
+
+ @return: C{True} if a L{recv_stderr} call on this channel would
+ immediately return at least one byte; C{False} otherwise.
+ @rtype: boolean
+
+ @since: 1.1
+ """
+ self.lock.acquire()
+ try:
+ if len(self.in_stderr_buffer) == 0:
+ return False
+ return True
+ finally:
+ self.lock.release()
+
+ def recv_stderr(self, nbytes):
+ """
+ Receive data from the channel's stderr stream. Only channels using
+ L{exec_command} or L{invoke_shell} without a pty will ever have data
+ on the stderr stream. The return value is a string representing the
+ data received. The maximum amount of data to be received at once is
+ specified by C{nbytes}. If a string of length zero is returned, the
+ channel stream has closed.
+
+ @param nbytes: maximum number of bytes to read.
+ @type nbytes: int
+ @return: data.
+ @rtype: str
+
+ @raise socket.timeout: if no data is ready before the timeout set by
+ L{settimeout}.
+
+ @since: 1.1
+ """
+ out = ''
+ self.lock.acquire()
+ try:
+ if len(self.in_stderr_buffer) == 0:
+ if self.closed or self.eof_received:
+ return out
+ # should we block?
+ if self.timeout == 0.0:
+ raise socket.timeout()
+ # loop here in case we get woken up but a different thread has grabbed everything in the buffer
+ timeout = self.timeout
+ while (len(self.in_stderr_buffer) == 0) and not self.closed and not self.eof_received:
+ then = time.time()
+ self.in_stderr_buffer_cv.wait(timeout)
+ if timeout != None:
+ timeout -= time.time() - then
+ if timeout <= 0.0:
+ raise socket.timeout()
+ # something in the buffer and we have the lock
+ if len(self.in_stderr_buffer) <= nbytes:
+ out = self.in_stderr_buffer
+ self.in_stderr_buffer = ''
+ else:
+ out = self.in_stderr_buffer[:nbytes]
+ self.in_stderr_buffer = self.in_stderr_buffer[nbytes:]
+ self._check_add_window(len(out))
+ finally:
+ self.lock.release()
+ return out
+
+ def send(self, s):
+ """
+ Send data to the channel. Returns the number of bytes sent, or 0 if
+ the channel stream is closed. Applications are responsible for
+ checking that all data has been sent: if only some of the data was
+ transmitted, the application needs to attempt delivery of the remaining
+ data.
+
+ @param s: data to send.
+ @type s: str
+ @return: number of bytes actually sent.
+ @rtype: int
+
+ @raise socket.timeout: if no data could be sent before the timeout set
+ by L{settimeout}.
+ """
+ size = len(s)
+ self.lock.acquire()
+ try:
+ size = self._wait_for_send_window(size)
+ if size == 0:
+ # eof or similar
+ return 0
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_DATA))
+ m.add_int(self.remote_chanid)
+ m.add_string(s[:size])
+ self.transport._send_user_message(m)
+ finally:
+ self.lock.release()
+ return size
+
+ def send_stderr(self, s):
+ """
+ Send data to the channel on the "stderr" stream. This is normally
+ only used by servers to send output from shell commands -- clients
+ won't use this. Returns the number of bytes sent, or 0 if the channel
+ stream is closed. Applications are responsible for checking that all
+ data has been sent: if only some of the data was transmitted, the
+ application needs to attempt delivery of the remaining data.
+
+ @param s: data to send.
+ @type s: str
+ @return: number of bytes actually sent.
+ @rtype: int
+
+ @raise socket.timeout: if no data could be sent before the timeout set
+ by L{settimeout}.
+
+ @since: 1.1
+ """
+ size = len(s)
+ self.lock.acquire()
+ try:
+ size = self._wait_for_send_window(size)
+ if size == 0:
+ # eof or similar
+ return 0
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_EXTENDED_DATA))
+ m.add_int(self.remote_chanid)
+ m.add_int(1)
+ m.add_string(s[:size])
+ self.transport._send_user_message(m)
+ finally:
+ self.lock.release()
+ return size
+
+ def sendall(self, s):
+ """
+ Send data to the channel, without allowing partial results. Unlike
+ L{send}, this method continues to send data from the given string until
+ either all data has been sent or an error occurs. Nothing is returned.
+
+ @param s: data to send.
+ @type s: str
+
+ @raise socket.timeout: if sending stalled for longer than the timeout
+ set by L{settimeout}.
+ @raise socket.error: if an error occured before the entire string was
+ sent.
+
+ @note: If the channel is closed while only part of the data hase been
+ sent, there is no way to determine how much data (if any) was sent.
+ This is irritating, but identically follows python's API.
+ """
+ while s:
+ if self.closed:
+ # this doesn't seem useful, but it is the documented behavior of Socket
+ raise socket.error('Socket is closed')
+ sent = self.send(s)
+ s = s[sent:]
+ return None
+
+ def sendall_stderr(self, s):
+ """
+ Send data to the channel's "stderr" stream, without allowing partial
+ results. Unlike L{send_stderr}, this method continues to send data
+ from the given string until all data has been sent or an error occurs.
+ Nothing is returned.
+
+ @param s: data to send to the client as "stderr" output.
+ @type s: str
+
+ @raise socket.timeout: if sending stalled for longer than the timeout
+ set by L{settimeout}.
+ @raise socket.error: if an error occured before the entire string was
+ sent.
+
+ @since: 1.1
+ """
+ while s:
+ if self.closed:
+ raise socket.error('Socket is closed')
+ sent = self.send_stderr(s)
+ s = s[sent:]
+ return None
+
+ def makefile(self, *params):
+ """
+ Return a file-like object associated with this channel. The optional
+ C{mode} and C{bufsize} arguments are interpreted the same way as by
+ the built-in C{file()} function in python.
+
+ @return: object which can be used for python file I/O.
+ @rtype: L{ChannelFile}
+ """
+ return ChannelFile(*([self] + list(params)))
+
+ def makefile_stderr(self, *params):
+ """
+ Return a file-like object associated with this channel's stderr
+ stream. Only channels using L{exec_command} or L{invoke_shell}
+ without a pty will ever have data on the stderr stream.
+
+ The optional C{mode} and C{bufsize} arguments are interpreted the
+ same way as by the built-in C{file()} function in python. For a
+ client, it only makes sense to open this file for reading. For a
+ server, it only makes sense to open this file for writing.
+
+ @return: object which can be used for python file I/O.
+ @rtype: L{ChannelFile}
+
+ @since: 1.1
+ """
+ return ChannelStderrFile(*([self] + list(params)))
+
+ def fileno(self):
+ """
+ Returns an OS-level file descriptor which can be used for polling, but
+ but I{not} for reading or writing). This is primaily to allow python's
+ C{select} module to work.
+
+ The first time C{fileno} is called on a channel, a pipe is created to
+ simulate real OS-level file descriptor (FD) behavior. Because of this,
+ two OS-level FDs are created, which will use up FDs faster than normal.
+ You won't notice this effect unless you open hundreds or thousands of
+ channels simultaneously, but it's still notable.
+
+ @return: an OS-level file descriptor
+ @rtype: int
+
+ @warning: This method causes channel reads to be slightly less
+ efficient.
+ """
+ self.lock.acquire()
+ try:
+ if self.pipe is not None:
+ return self.pipe.fileno()
+ # create the pipe and feed in any existing data
+ self.pipe = pipe.make_pipe()
+ if len(self.in_buffer) > 0:
+ self.pipe.set()
+ return self.pipe.fileno()
+ finally:
+ self.lock.release()
+
+ def shutdown(self, how):
+ """
+ Shut down one or both halves of the connection. If C{how} is 0,
+ further receives are disallowed. If C{how} is 1, further sends
+ are disallowed. If C{how} is 2, further sends and receives are
+ disallowed. This closes the stream in one or both directions.
+
+ @param how: 0 (stop receiving), 1 (stop sending), or 2 (stop
+ receiving and sending).
+ @type how: int
+ """
+ if (how == 0) or (how == 2):
+ # feign "read" shutdown
+ self.eof_received = 1
+ if (how == 1) or (how == 2):
+ self.lock.acquire()
+ try:
+ m = self._send_eof()
+ finally:
+ self.lock.release()
+ if m is not None:
+ self.transport._send_user_message(m)
+
+ def shutdown_read(self):
+ """
+ Shutdown the receiving side of this socket, closing the stream in
+ the incoming direction. After this call, future reads on this
+ channel will fail instantly. This is a convenience method, equivalent
+ to C{shutdown(0)}, for people who don't make it a habit to
+ memorize unix constants from the 1970s.
+
+ @since: 1.2
+ """
+ self.shutdown(0)
+
+ def shutdown_write(self):
+ """
+ Shutdown the sending side of this socket, closing the stream in
+ the outgoing direction. After this call, future writes on this
+ channel will fail instantly. This is a convenience method, equivalent
+ to C{shutdown(1)}, for people who don't make it a habit to
+ memorize unix constants from the 1970s.
+
+ @since: 1.2
+ """
+ self.shutdown(1)
+
+
+ ### calls from Transport
+
+
+ def _set_transport(self, transport):
+ self.transport = transport
+ self.logger = util.get_logger(self.transport.get_log_channel() + '.' + self.name)
+
+ def _set_window(self, window_size, max_packet_size):
+ self.in_window_size = window_size
+ self.in_max_packet_size = max_packet_size
+ # threshold of bytes we receive before we bother to send a window update
+ self.in_window_threshold = window_size // 10
+ self.in_window_sofar = 0
+ self._log(DEBUG, 'Max packet in: %d bytes' % max_packet_size)
+
+ def _set_remote_channel(self, chanid, window_size, max_packet_size):
+ self.remote_chanid = chanid
+ self.out_window_size = window_size
+ self.out_max_packet_size = max(max_packet_size, self.MIN_PACKET_SIZE)
+ self.active = 1
+ self._log(DEBUG, 'Max packet out: %d bytes' % max_packet_size)
+
+ def _request_success(self, m):
+ self._log(DEBUG, 'Sesch channel %d request ok' % self.chanid)
+ self.event.set()
+ return
+
+ def _request_failed(self, m):
+ self.lock.acquire()
+ try:
+ msgs = self._close_internal()
+ finally:
+ self.lock.release()
+ for m in msgs:
+ if m is not None:
+ self.transport._send_user_message(m)
+
+ def _feed(self, m):
+ if type(m) is str:
+ # passed from _feed_extended
+ s = m
+ else:
+ s = m.get_string()
+ self.lock.acquire()
+ try:
+ if self.ultra_debug:
+ self._log(DEBUG, 'fed %d bytes' % len(s))
+ if self.pipe is not None:
+ self.pipe.set()
+ self.in_buffer += s
+ self.in_buffer_cv.notifyAll()
+ finally:
+ self.lock.release()
+
+ def _feed_extended(self, m):
+ code = m.get_int()
+ s = m.get_string()
+ if code != 1:
+ self._log(ERROR, 'unknown extended_data type %d; discarding' % code)
+ return
+ if self.combine_stderr:
+ return self._feed(s)
+ self.lock.acquire()
+ try:
+ if self.ultra_debug:
+ self._log(DEBUG, 'fed %d stderr bytes' % len(s))
+ self.in_stderr_buffer += s
+ self.in_stderr_buffer_cv.notifyAll()
+ finally:
+ self.lock.release()
+
+ def _window_adjust(self, m):
+ nbytes = m.get_int()
+ self.lock.acquire()
+ try:
+ if self.ultra_debug:
+ self._log(DEBUG, 'window up %d' % nbytes)
+ self.out_window_size += nbytes
+ self.out_buffer_cv.notifyAll()
+ finally:
+ self.lock.release()
+
+ def _handle_request(self, m):
+ key = m.get_string()
+ want_reply = m.get_boolean()
+ server = self.transport.server_object
+ ok = False
+ if key == 'exit-status':
+ self.exit_status = m.get_int()
+ self.status_event.set()
+ ok = True
+ elif key == 'xon-xoff':
+ # ignore
+ ok = True
+ elif key == 'pty-req':
+ term = m.get_string()
+ width = m.get_int()
+ height = m.get_int()
+ pixelwidth = m.get_int()
+ pixelheight = m.get_int()
+ modes = m.get_string()
+ if server is None:
+ ok = False
+ else:
+ ok = server.check_channel_pty_request(self, term, width, height, pixelwidth,
+ pixelheight, modes)
+ elif key == 'shell':
+ if server is None:
+ ok = False
+ else:
+ ok = server.check_channel_shell_request(self)
+ elif key == 'exec':
+ cmd = m.get_string()
+ if server is None:
+ ok = False
+ else:
+ ok = server.check_channel_exec_request(self, cmd)
+ elif key == 'subsystem':
+ name = m.get_string()
+ if server is None:
+ ok = False
+ else:
+ ok = server.check_channel_subsystem_request(self, name)
+ elif key == 'window-change':
+ width = m.get_int()
+ height = m.get_int()
+ pixelwidth = m.get_int()
+ pixelheight = m.get_int()
+ if server is None:
+ ok = False
+ else:
+ ok = server.check_channel_window_change_request(self, width, height, pixelwidth,
+ pixelheight)
+ else:
+ self._log(DEBUG, 'Unhandled channel request "%s"' % key)
+ ok = False
+ if want_reply:
+ m = Message()
+ if ok:
+ m.add_byte(chr(MSG_CHANNEL_SUCCESS))
+ else:
+ m.add_byte(chr(MSG_CHANNEL_FAILURE))
+ m.add_int(self.remote_chanid)
+ self.transport._send_user_message(m)
+
+ def _handle_eof(self, m):
+ self.lock.acquire()
+ try:
+ if not self.eof_received:
+ self.eof_received = True
+ self.in_buffer_cv.notifyAll()
+ self.in_stderr_buffer_cv.notifyAll()
+ if self.pipe is not None:
+ self.pipe.set_forever()
+ finally:
+ self.lock.release()
+ self._log(DEBUG, 'EOF received')
+
+ def _handle_close(self, m):
+ self.lock.acquire()
+ try:
+ msgs = self._close_internal()
+ self.transport._unlink_channel(self.chanid)
+ finally:
+ self.lock.release()
+ for m in msgs:
+ if m is not None:
+ self.transport._send_user_message(m)
+
+
+ ### internals...
+
+
+ def _log(self, level, msg):
+ self.logger.log(level, msg)
+
+ def _set_closed(self):
+ # you are holding the lock.
+ self.closed = True
+ self.in_buffer_cv.notifyAll()
+ self.in_stderr_buffer_cv.notifyAll()
+ self.out_buffer_cv.notifyAll()
+ if self.pipe is not None:
+ self.pipe.set_forever()
+
+ def _send_eof(self):
+ # you are holding the lock.
+ if self.eof_sent:
+ return None
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_EOF))
+ m.add_int(self.remote_chanid)
+ self.eof_sent = True
+ self._log(DEBUG, 'EOF sent')
+ return m
+
+ def _close_internal(self):
+ # you are holding the lock.
+ if not self.active or self.closed:
+ return None, None
+ m1 = self._send_eof()
+ m2 = Message()
+ m2.add_byte(chr(MSG_CHANNEL_CLOSE))
+ m2.add_int(self.remote_chanid)
+ self._set_closed()
+ # can't unlink from the Transport yet -- the remote side may still
+ # try to send meta-data (exit-status, etc)
+ return m1, m2
+
+ def _unlink(self):
+ # server connection could die before we become active: still signal the close!
+ if self.closed:
+ return
+ self.lock.acquire()
+ try:
+ self._set_closed()
+ self.transport._unlink_channel(self.chanid)
+ finally:
+ self.lock.release()
+
+ def _check_add_window(self, n):
+ # already holding the lock!
+ if self.closed or self.eof_received or not self.active:
+ return 0
+ if self.ultra_debug:
+ self._log(DEBUG, 'addwindow %d' % n)
+ self.in_window_sofar += n
+ if self.in_window_sofar <= self.in_window_threshold:
+ return 0
+ if self.ultra_debug:
+ self._log(DEBUG, 'addwindow send %d' % self.in_window_sofar)
+ out = self.in_window_sofar
+ self.in_window_sofar = 0
+ return out
+
+ def _wait_for_send_window(self, size):
+ """
+ (You are already holding the lock.)
+ Wait for the send window to open up, and allocate up to C{size} bytes
+ for transmission. If no space opens up before the timeout, a timeout
+ exception is raised. Returns the number of bytes available to send
+ (may be less than requested).
+ """
+ # you are already holding the lock
+ if self.closed or self.eof_sent:
+ return 0
+ if self.out_window_size == 0:
+ # should we block?
+ if self.timeout == 0.0:
+ raise socket.timeout()
+ # loop here in case we get woken up but a different thread has filled the buffer
+ timeout = self.timeout
+ while self.out_window_size == 0:
+ if self.closed or self.eof_sent:
+ return 0
+ then = time.time()
+ self.out_buffer_cv.wait(timeout)
+ if timeout != None:
+ timeout -= time.time() - then
+ if timeout <= 0.0:
+ raise socket.timeout()
+ # we have some window to squeeze into
+ if self.closed or self.eof_sent:
+ return 0
+ if self.out_window_size < size:
+ size = self.out_window_size
+ if self.out_max_packet_size - 64 < size:
+ size = self.out_max_packet_size - 64
+ self.out_window_size -= size
+ if self.ultra_debug:
+ self._log(DEBUG, 'window down to %d' % self.out_window_size)
+ return size
+
+
+class ChannelFile (BufferedFile):
+ """
+ A file-like wrapper around L{Channel}. A ChannelFile is created by calling
+ L{Channel.makefile}.
+
+ @bug: To correctly emulate the file object created from a socket's
+ C{makefile} method, a L{Channel} and its C{ChannelFile} should be able
+ to be closed or garbage-collected independently. Currently, closing
+ the C{ChannelFile} does nothing but flush the buffer.
+ """
+
+ def __init__(self, channel, mode = 'r', bufsize = -1):
+ self.channel = channel
+ BufferedFile.__init__(self)
+ self._set_mode(mode, bufsize)
+
+ def __repr__(self):
+ """
+ Returns a string representation of this object, for debugging.
+
+ @rtype: str
+ """
+ return '<paramiko.ChannelFile from ' + repr(self.channel) + '>'
+
+ def _read(self, size):
+ return self.channel.recv(size)
+
+ def _write(self, data):
+ self.channel.sendall(data)
+ return len(data)
+
+ seek = BufferedFile.seek
+
+
+class ChannelStderrFile (ChannelFile):
+ def __init__(self, channel, mode = 'r', bufsize = -1):
+ ChannelFile.__init__(self, channel, mode, bufsize)
+
+ def _read(self, size):
+ return self.channel.recv_stderr(size)
+
+ def _write(self, data):
+ self.channel.sendall_stderr(data)
+ return len(data)
+
+
+# vim: set shiftwidth=4 expandtab :
diff --git a/paramiko/common.py b/paramiko/common.py
new file mode 100644
index 0000000..c5999e6
--- /dev/null
+++ b/paramiko/common.py
@@ -0,0 +1,136 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Common constants and global variables.
+"""
+
+MSG_DISCONNECT, MSG_IGNORE, MSG_UNIMPLEMENTED, MSG_DEBUG, MSG_SERVICE_REQUEST, \
+ MSG_SERVICE_ACCEPT = range(1, 7)
+MSG_KEXINIT, MSG_NEWKEYS = range(20, 22)
+MSG_USERAUTH_REQUEST, MSG_USERAUTH_FAILURE, MSG_USERAUTH_SUCCESS, \
+ MSG_USERAUTH_BANNER = range(50, 54)
+MSG_USERAUTH_PK_OK = 60
+MSG_USERAUTH_INFO_REQUEST, MSG_USERAUTH_INFO_RESPONSE = range(60, 62)
+MSG_GLOBAL_REQUEST, MSG_REQUEST_SUCCESS, MSG_REQUEST_FAILURE = range(80, 83)
+MSG_CHANNEL_OPEN, MSG_CHANNEL_OPEN_SUCCESS, MSG_CHANNEL_OPEN_FAILURE, \
+ MSG_CHANNEL_WINDOW_ADJUST, MSG_CHANNEL_DATA, MSG_CHANNEL_EXTENDED_DATA, \
+ MSG_CHANNEL_EOF, MSG_CHANNEL_CLOSE, MSG_CHANNEL_REQUEST, \
+ MSG_CHANNEL_SUCCESS, MSG_CHANNEL_FAILURE = range(90, 101)
+
+
+# for debugging:
+MSG_NAMES = {
+ MSG_DISCONNECT: 'disconnect',
+ MSG_IGNORE: 'ignore',
+ MSG_UNIMPLEMENTED: 'unimplemented',
+ MSG_DEBUG: 'debug',
+ MSG_SERVICE_REQUEST: 'service-request',
+ MSG_SERVICE_ACCEPT: 'service-accept',
+ MSG_KEXINIT: 'kexinit',
+ MSG_NEWKEYS: 'newkeys',
+ 30: 'kex30',
+ 31: 'kex31',
+ 32: 'kex32',
+ 33: 'kex33',
+ 34: 'kex34',
+ MSG_USERAUTH_REQUEST: 'userauth-request',
+ MSG_USERAUTH_FAILURE: 'userauth-failure',
+ MSG_USERAUTH_SUCCESS: 'userauth-success',
+ MSG_USERAUTH_BANNER: 'userauth--banner',
+ MSG_USERAUTH_PK_OK: 'userauth-60(pk-ok/info-request)',
+ MSG_USERAUTH_INFO_RESPONSE: 'userauth-info-response',
+ MSG_GLOBAL_REQUEST: 'global-request',
+ MSG_REQUEST_SUCCESS: 'request-success',
+ MSG_REQUEST_FAILURE: 'request-failure',
+ MSG_CHANNEL_OPEN: 'channel-open',
+ MSG_CHANNEL_OPEN_SUCCESS: 'channel-open-success',
+ MSG_CHANNEL_OPEN_FAILURE: 'channel-open-failure',
+ MSG_CHANNEL_WINDOW_ADJUST: 'channel-window-adjust',
+ MSG_CHANNEL_DATA: 'channel-data',
+ MSG_CHANNEL_EXTENDED_DATA: 'channel-extended-data',
+ MSG_CHANNEL_EOF: 'channel-eof',
+ MSG_CHANNEL_CLOSE: 'channel-close',
+ MSG_CHANNEL_REQUEST: 'channel-request',
+ MSG_CHANNEL_SUCCESS: 'channel-success',
+ MSG_CHANNEL_FAILURE: 'channel-failure'
+ }
+
+
+# authentication request return codes:
+AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED = range(3)
+
+
+# channel request failed reasons:
+(OPEN_SUCCEEDED,
+ OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,
+ OPEN_FAILED_CONNECT_FAILED,
+ OPEN_FAILED_UNKNOWN_CHANNEL_TYPE,
+ OPEN_FAILED_RESOURCE_SHORTAGE) = range(0, 5)
+
+
+CONNECTION_FAILED_CODE = {
+ 1: 'Administratively prohibited',
+ 2: 'Connect failed',
+ 3: 'Unknown channel type',
+ 4: 'Resource shortage'
+}
+
+
+DISCONNECT_SERVICE_NOT_AVAILABLE, DISCONNECT_AUTH_CANCELLED_BY_USER, \
+ DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE = 7, 13, 14
+
+
+from Crypto.Util.randpool import PersistentRandomPool, RandomPool
+
+# keep a crypto-strong PRNG nearby
+try:
+ randpool = PersistentRandomPool(os.path.join(os.path.expanduser('~'), '/.randpool'))
+except:
+ # the above will likely fail on Windows - fall back to non-persistent random pool
+ randpool = RandomPool()
+
+try:
+ randpool.randomize()
+except:
+ # earlier versions of pyCrypto (pre-2.0) don't have randomize()
+ pass
+
+import sys
+if sys.version_info < (2, 3):
+ try:
+ import logging
+ except:
+ import logging22 as logging
+ import select
+ PY22 = True
+
+ import socket
+ if not hasattr(socket, 'timeout'):
+ class timeout(socket.error): pass
+ socket.timeout = timeout
+ del timeout
+else:
+ import logging
+ PY22 = False
+
+DEBUG = logging.DEBUG
+INFO = logging.INFO
+WARNING = logging.WARNING
+ERROR = logging.ERROR
+CRITICAL = logging.CRITICAL
diff --git a/paramiko/compress.py b/paramiko/compress.py
new file mode 100644
index 0000000..bdf4b42
--- /dev/null
+++ b/paramiko/compress.py
@@ -0,0 +1,39 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Compression implementations for a Transport.
+"""
+
+import zlib
+
+
+class ZlibCompressor (object):
+ def __init__(self):
+ self.z = zlib.compressobj(9)
+
+ def __call__(self, data):
+ return self.z.compress(data) + self.z.flush(zlib.Z_FULL_FLUSH)
+
+
+class ZlibDecompressor (object):
+ def __init__(self):
+ self.z = zlib.decompressobj()
+
+ def __call__(self, data):
+ return self.z.decompress(data)
diff --git a/paramiko/dsskey.py b/paramiko/dsskey.py
new file mode 100644
index 0000000..2b31372
--- /dev/null
+++ b/paramiko/dsskey.py
@@ -0,0 +1,176 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+L{DSSKey}
+"""
+
+from Crypto.PublicKey import DSA
+from Crypto.Hash import SHA
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.ssh_exception import SSHException
+from paramiko.message import Message
+from paramiko.ber import BER, BERException
+from paramiko.pkey import PKey
+
+
+class DSSKey (PKey):
+ """
+ Representation of a DSS key which can be used to sign an verify SSH2
+ data.
+ """
+
+ def __init__(self, msg=None, data=None, filename=None, password=None, vals=None):
+ if filename is not None:
+ self._from_private_key_file(filename, password)
+ return
+ if (msg is None) and (data is not None):
+ msg = Message(data)
+ if vals is not None:
+ self.p, self.q, self.g, self.y = vals
+ else:
+ if msg is None:
+ raise SSHException('Key object may not be empty')
+ if msg.get_string() != 'ssh-dss':
+ raise SSHException('Invalid key')
+ self.p = msg.get_mpint()
+ self.q = msg.get_mpint()
+ self.g = msg.get_mpint()
+ self.y = msg.get_mpint()
+ self.size = util.bit_length(self.p)
+
+ def __str__(self):
+ m = Message()
+ m.add_string('ssh-dss')
+ m.add_mpint(self.p)
+ m.add_mpint(self.q)
+ m.add_mpint(self.g)
+ m.add_mpint(self.y)
+ return str(m)
+
+ def __hash__(self):
+ h = hash(self.get_name())
+ h = h * 37 + hash(self.p)
+ h = h * 37 + hash(self.q)
+ h = h * 37 + hash(self.g)
+ h = h * 37 + hash(self.y)
+ # h might be a long by now...
+ return hash(h)
+
+ def get_name(self):
+ return 'ssh-dss'
+
+ def get_bits(self):
+ return self.size
+
+ def can_sign(self):
+ return hasattr(self, 'x')
+
+ def sign_ssh_data(self, rpool, data):
+ digest = SHA.new(data).digest()
+ dss = DSA.construct((long(self.y), long(self.g), long(self.p), long(self.q), long(self.x)))
+ # generate a suitable k
+ qsize = len(util.deflate_long(self.q, 0))
+ while True:
+ k = util.inflate_long(rpool.get_bytes(qsize), 1)
+ if (k > 2) and (k < self.q):
+ break
+ r, s = dss.sign(util.inflate_long(digest, 1), k)
+ m = Message()
+ m.add_string('ssh-dss')
+ # apparently, in rare cases, r or s may be shorter than 20 bytes!
+ rstr = util.deflate_long(r, 0)
+ sstr = util.deflate_long(s, 0)
+ if len(rstr) < 20:
+ rstr = '\x00' * (20 - len(rstr)) + rstr
+ if len(sstr) < 20:
+ sstr = '\x00' * (20 - len(sstr)) + sstr
+ m.add_string(rstr + sstr)
+ return m
+
+ def verify_ssh_sig(self, data, msg):
+ if len(str(msg)) == 40:
+ # spies.com bug: signature has no header
+ sig = str(msg)
+ else:
+ kind = msg.get_string()
+ if kind != 'ssh-dss':
+ return 0
+ sig = msg.get_string()
+
+ # pull out (r, s) which are NOT encoded as mpints
+ sigR = util.inflate_long(sig[:20], 1)
+ sigS = util.inflate_long(sig[20:], 1)
+ sigM = util.inflate_long(SHA.new(data).digest(), 1)
+
+ dss = DSA.construct((long(self.y), long(self.g), long(self.p), long(self.q)))
+ return dss.verify(sigM, (sigR, sigS))
+
+ def write_private_key_file(self, filename, password=None):
+ keylist = [ 0, self.p, self.q, self.g, self.y, self.x ]
+ try:
+ b = BER()
+ b.encode(keylist)
+ except BERException:
+ raise SSHException('Unable to create ber encoding of key')
+ self._write_private_key_file('DSA', filename, str(b), password)
+
+ def generate(bits=1024, progress_func=None):
+ """
+ Generate a new private DSS key. This factory function can be used to
+ generate a new host key or authentication key.
+
+ @param bits: number of bits the generated key should be.
+ @type bits: int
+ @param progress_func: an optional function to call at key points in
+ key generation (used by C{pyCrypto.PublicKey}).
+ @type progress_func: function
+ @return: new private key
+ @rtype: L{DSSKey}
+
+ @since: fearow
+ """
+ randpool.stir()
+ dsa = DSA.generate(bits, randpool.get_bytes, progress_func)
+ key = DSSKey(vals=(dsa.p, dsa.q, dsa.g, dsa.y))
+ key.x = dsa.x
+ return key
+ generate = staticmethod(generate)
+
+
+ ### internals...
+
+
+ def _from_private_key_file(self, filename, password):
+ # private key file contains:
+ # DSAPrivateKey = { version = 0, p, q, g, y, x }
+ data = self._read_private_key_file('DSA', filename, password)
+ try:
+ keylist = BER(data).decode()
+ except BERException, x:
+ raise SSHException('Unable to parse key file: ' + str(x))
+ if (type(keylist) is not list) or (len(keylist) < 6) or (keylist[0] != 0):
+ raise SSHException('not a valid DSA private key file (bad ber encoding)')
+ self.p = keylist[1]
+ self.q = keylist[2]
+ self.g = keylist[3]
+ self.y = keylist[4]
+ self.x = keylist[5]
+ self.size = util.bit_length(self.p)
diff --git a/paramiko/file.py b/paramiko/file.py
new file mode 100644
index 0000000..c29e7c4
--- /dev/null
+++ b/paramiko/file.py
@@ -0,0 +1,440 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+BufferedFile.
+"""
+
+from cStringIO import StringIO
+
+
+_FLAG_READ = 0x1
+_FLAG_WRITE = 0x2
+_FLAG_APPEND = 0x4
+_FLAG_BINARY = 0x10
+_FLAG_BUFFERED = 0x20
+_FLAG_LINE_BUFFERED = 0x40
+_FLAG_UNIVERSAL_NEWLINE = 0x80
+
+
+class BufferedFile (object):
+ """
+ Reusable base class to implement python-style file buffering around a
+ simpler stream.
+ """
+
+ _DEFAULT_BUFSIZE = 8192
+
+ SEEK_SET = 0
+ SEEK_CUR = 1
+ SEEK_END = 2
+
+ def __init__(self):
+ self._flags = 0
+ self._bufsize = self._DEFAULT_BUFSIZE
+ self._wbuffer = StringIO()
+ self._rbuffer = ''
+ self._at_trailing_cr = False
+ self._closed = False
+ # pos - position within the file, according to the user
+ # realpos - position according the OS
+ # (these may be different because we buffer for line reading)
+ self._pos = self._realpos = 0
+
+ def __del__(self):
+ self.close()
+
+ def __iter__(self):
+ """
+ Returns an iterator that can be used to iterate over the lines in this
+ file. This iterator happens to return the file itself, since a file is
+ its own iterator.
+
+ @raise ValueError: if the file is closed.
+
+ @return: an interator.
+ @rtype: iterator
+ """
+ if self._closed:
+ raise ValueError('I/O operation on closed file')
+ return self
+
+ def close(self):
+ """
+ Close the file. Future read and write operations will fail.
+ """
+ self.flush()
+ self._closed = True
+
+ def flush(self):
+ """
+ Write out any data in the write buffer. This may do nothing if write
+ buffering is not turned on.
+ """
+ self._write_all(self._wbuffer.getvalue())
+ self._wbuffer = StringIO()
+ return
+
+ def next(self):
+ """
+ Returns the next line from the input, or raises L{StopIteration} when
+ EOF is hit. Unlike python file objects, it's okay to mix calls to
+ C{next} and L{readline}.
+
+ @raise StopIteration: when the end of the file is reached.
+
+ @return: a line read from the file.
+ @rtype: str
+ """
+ line = self.readline()
+ if not line:
+ raise StopIteration
+ return line
+
+ def read(self, size=None):
+ """
+ Read at most C{size} bytes from the file (less if we hit the end of the
+ file first). If the C{size} argument is negative or omitted, read all
+ the remaining data in the file.
+
+ @param size: maximum number of bytes to read.
+ @type size: int
+ @return: data read from the file, or an empty string if EOF was
+ encountered immediately.
+ @rtype: str
+ """
+ if self._closed:
+ raise IOError('File is closed')
+ if not (self._flags & _FLAG_READ):
+ raise IOError('File not open for reading')
+ if (size is None) or (size < 0):
+ # go for broke
+ result = self._rbuffer
+ self._rbuffer = ''
+ self._pos += len(result)
+ while True:
+ try:
+ new_data = self._read(self._DEFAULT_BUFSIZE)
+ except EOFError:
+ new_data = None
+ if (new_data is None) or (len(new_data) == 0):
+ break
+ result += new_data
+ self._realpos += len(new_data)
+ self._pos += len(new_data)
+ return result
+ if size <= len(self._rbuffer):
+ result = self._rbuffer[:size]
+ self._rbuffer = self._rbuffer[size:]
+ self._pos += len(result)
+ return result
+ while len(self._rbuffer) < size:
+ try:
+ new_data = self._read(max(self._bufsize, size - len(self._rbuffer)))
+ except EOFError:
+ new_data = None
+ if (new_data is None) or (len(new_data) == 0):
+ break
+ self._rbuffer += new_data
+ self._realpos += len(new_data)
+ result = self._rbuffer[:size]
+ self._rbuffer = self._rbuffer[size:]
+ self._pos += len(result)
+ return result
+
+ def readline(self, size=None):
+ """
+ Read one entire line from the file. A trailing newline character is
+ kept in the string (but may be absent when a file ends with an
+ incomplete line). If the size argument is present and non-negative, it
+ is a maximum byte count (including the trailing newline) and an
+ incomplete line may be returned. An empty string is returned only when
+ EOF is encountered immediately.
+
+ @note: Unlike stdio's C{fgets()}, the returned string contains null
+ characters (C{'\\0'}) if they occurred in the input.
+
+ @param size: maximum length of returned string.
+ @type size: int
+ @return: next line of the file, or an empty string if the end of the
+ file has been reached.
+ @rtype: str
+ """
+ # it's almost silly how complex this function is.
+ if self._closed:
+ raise IOError('File is closed')
+ if not (self._flags & _FLAG_READ):
+ raise IOError('File not open for reading')
+ line = self._rbuffer
+ while True:
+ if self._at_trailing_cr and (self._flags & _FLAG_UNIVERSAL_NEWLINE) and (len(line) > 0):
+ # edge case: the newline may be '\r\n' and we may have read
+ # only the first '\r' last time.
+ if line[0] == '\n':
+ line = line[1:]
+ self._record_newline('\r\n')
+ else:
+ self._record_newline('\r')
+ self._at_trailing_cr = False
+ # check size before looking for a linefeed, in case we already have
+ # enough.
+ if (size is not None) and (size >= 0):
+ if len(line) >= size:
+ # truncate line and return
+ self._rbuffer = line[size:]
+ line = line[:size]
+ self._pos += len(line)
+ return line
+ n = size - len(line)
+ else:
+ n = self._DEFAULT_BUFSIZE
+ if ('\n' in line) or ((self._flags & _FLAG_UNIVERSAL_NEWLINE) and ('\r' in line)):
+ break
+ try:
+ new_data = self._read(n)
+ except EOFError:
+ new_data = None
+ if (new_data is None) or (len(new_data) == 0):
+ self._rbuffer = ''
+ self._pos += len(line)
+ return line
+ line += new_data
+ self._realpos += len(new_data)
+ # find the newline
+ pos = line.find('\n')
+ if self._flags & _FLAG_UNIVERSAL_NEWLINE:
+ rpos = line.find('\r')
+ if (rpos >= 0) and ((rpos < pos) or (pos < 0)):
+ pos = rpos
+ xpos = pos + 1
+ if (line[pos] == '\r') and (xpos < len(line)) and (line[xpos] == '\n'):
+ xpos += 1
+ self._rbuffer = line[xpos:]
+ lf = line[pos:xpos]
+ line = line[:pos] + '\n'
+ if (len(self._rbuffer) == 0) and (lf == '\r'):
+ # we could read the line up to a '\r' and there could still be a
+ # '\n' following that we read next time. note that and eat it.
+ self._at_trailing_cr = True
+ else:
+ self._record_newline(lf)
+ self._pos += len(line)
+ return line
+
+ def readlines(self, sizehint=None):
+ """
+ Read all remaining lines using L{readline} and return them as a list.
+ If the optional C{sizehint} argument is present, instead of reading up
+ to EOF, whole lines totalling approximately sizehint bytes (possibly
+ after rounding up to an internal buffer size) are read.
+
+ @param sizehint: desired maximum number of bytes to read.
+ @type sizehint: int
+ @return: list of lines read from the file.
+ @rtype: list
+ """
+ lines = []
+ bytes = 0
+ while 1:
+ line = self.readline()
+ if len(line) == 0:
+ break
+ lines.append(line)
+ bytes += len(line)
+ if (sizehint is not None) and (bytes >= sizehint):
+ break
+ return lines
+
+ def seek(self, offset, whence=0):
+ """
+ Set the file's current position, like stdio's C{fseek}. Not all file
+ objects support seeking.
+
+ @note: If a file is opened in append mode (C{'a'} or C{'a+'}), any seek
+ operations will be undone at the next write (as the file position
+ will move back to the end of the file).
+
+ @param offset: position to move to within the file, relative to
+ C{whence}.
+ @type offset: int
+ @param whence: type of movement: 0 = absolute; 1 = relative to the
+ current position; 2 = relative to the end of the file.
+ @type whence: int
+
+ @raise IOError: if the file doesn't support random access.
+ """
+ raise IOError('File does not support seeking.')
+
+ def tell(self):
+ """
+ Return the file's current position. This may not be accurate or
+ useful if the underlying file doesn't support random access, or was
+ opened in append mode.
+
+ @return: file position (in bytes).
+ @rtype: int
+ """
+ return self._pos
+
+ def write(self, data):
+ """
+ Write data to the file. If write buffering is on (C{bufsize} was
+ specified and non-zero), some or all of the data may not actually be
+ written yet. (Use L{flush} or L{close} to force buffered data to be
+ written out.)
+
+ @param data: data to write.
+ @type data: str
+ """
+ if self._closed:
+ raise IOError('File is closed')
+ if not (self._flags & _FLAG_WRITE):
+ raise IOError('File not open for writing')
+ if not (self._flags & _FLAG_BUFFERED):
+ self._write_all(data)
+ return
+ self._wbuffer.write(data)
+ if self._flags & _FLAG_LINE_BUFFERED:
+ # only scan the new data for linefeed, to avoid wasting time.
+ last_newline_pos = data.rfind('\n')
+ if last_newline_pos >= 0:
+ wbuf = self._wbuffer.getvalue()
+ last_newline_pos += len(wbuf) - len(data)
+ self._write_all(wbuf[:last_newline_pos + 1])
+ self._wbuffer = StringIO()
+ self._wbuffer.write(wbuf[last_newline_pos + 1:])
+ return
+ # even if we're line buffering, if the buffer has grown past the
+ # buffer size, force a flush.
+ if self._wbuffer.tell() >= self._bufsize:
+ self.flush()
+ return
+
+ def writelines(self, sequence):
+ """
+ Write a sequence of strings to the file. The sequence can be any
+ iterable object producing strings, typically a list of strings. (The
+ name is intended to match L{readlines}; C{writelines} does not add line
+ separators.)
+
+ @param sequence: an iterable sequence of strings.
+ @type sequence: sequence
+ """
+ for line in sequence:
+ self.write(line)
+ return
+
+ def xreadlines(self):
+ """
+ Identical to C{iter(f)}. This is a deprecated file interface that
+ predates python iterator support.
+
+ @return: an iterator.
+ @rtype: iterator
+ """
+ return self
+
+
+ ### overrides...
+
+
+ def _read(self, size):
+ """
+ I{(subclass override)}
+ Read data from the stream. Return C{None} or raise C{EOFError} to
+ indicate EOF.
+ """
+ raise EOFError()
+
+ def _write(self, data):
+ """
+ I{(subclass override)}
+ Write data into the stream.
+ """
+ raise IOError('write not implemented')
+
+ def _get_size(self):
+ """
+ I{(subclass override)}
+ Return the size of the file. This is called from within L{_set_mode}
+ if the file is opened in append mode, so the file position can be
+ tracked and L{seek} and L{tell} will work correctly. If the file is
+ a stream that can't be randomly accessed, you don't need to override
+ this method,
+ """
+ return 0
+
+
+ ### internals...
+
+
+ def _set_mode(self, mode='r', bufsize=-1):
+ """
+ Subclasses call this method to initialize the BufferedFile.
+ """
+ if bufsize == 1:
+ # apparently, line buffering only affects writes. reads are only
+ # buffered if you call readline (directly or indirectly: iterating
+ # over a file will indirectly call readline).
+ self._flags |= _FLAG_BUFFERED | _FLAG_LINE_BUFFERED
+ elif bufsize > 1:
+ self._bufsize = bufsize
+ self._flags |= _FLAG_BUFFERED
+ if ('r' in mode) or ('+' in mode):
+ self._flags |= _FLAG_READ
+ if ('w' in mode) or ('+' in mode):
+ self._flags |= _FLAG_WRITE
+ if ('a' in mode):
+ self._flags |= _FLAG_WRITE | _FLAG_APPEND
+ self._size = self._get_size()
+ self._pos = self._realpos = self._size
+ if ('b' in mode):
+ self._flags |= _FLAG_BINARY
+ if ('U' in mode):
+ self._flags |= _FLAG_UNIVERSAL_NEWLINE
+ # built-in file objects have this attribute to store which kinds of
+ # line terminations they've seen:
+ # <http://www.python.org/doc/current/lib/built-in-funcs.html>
+ self.newlines = None
+
+ def _write_all(self, data):
+ # the underlying stream may be something that does partial writes (like
+ # a socket).
+ while len(data) > 0:
+ count = self._write(data)
+ data = data[count:]
+ if self._flags & _FLAG_APPEND:
+ self._size += count
+ self._pos = self._realpos = self._size
+ else:
+ self._pos += count
+ self._realpos += count
+ return None
+
+ def _record_newline(self, newline):
+ # silliness about tracking what kinds of newlines we've seen.
+ # i don't understand why it can be None, a string, or a tuple, instead
+ # of just always being a tuple, but we'll emulate that behavior anyway.
+ if not (self._flags & _FLAG_UNIVERSAL_NEWLINE):
+ return
+ if self.newlines is None:
+ self.newlines = newline
+ elif (type(self.newlines) is str) and (self.newlines != newline):
+ self.newlines = (self.newlines, newline)
+ elif newline not in self.newlines:
+ self.newlines += (newline,)
diff --git a/paramiko/kex_gex.py b/paramiko/kex_gex.py
new file mode 100644
index 0000000..994d76c
--- /dev/null
+++ b/paramiko/kex_gex.py
@@ -0,0 +1,202 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Variant on L{KexGroup1 <paramiko.kex_group1.KexGroup1>} where the prime "p" and
+generator "g" are provided by the server. A bit more work is required on the
+client side, and a B{lot} more on the server side.
+"""
+
+from Crypto.Hash import SHA
+from Crypto.Util import number
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.message import Message
+from paramiko.ssh_exception import SSHException
+
+
+_MSG_KEXDH_GEX_GROUP, _MSG_KEXDH_GEX_INIT, _MSG_KEXDH_GEX_REPLY, _MSG_KEXDH_GEX_REQUEST = range(31, 35)
+
+
+class KexGex (object):
+
+ name = 'diffie-hellman-group-exchange-sha1'
+ min_bits = 1024
+ max_bits = 8192
+ preferred_bits = 2048
+
+ def __init__(self, transport):
+ self.transport = transport
+
+ def start_kex(self):
+ if self.transport.server_mode:
+ self.transport._expect_packet(_MSG_KEXDH_GEX_REQUEST)
+ return
+ # request a bit range: we accept (min_bits) to (max_bits), but prefer
+ # (preferred_bits). according to the spec, we shouldn't pull the
+ # minimum up above 1024.
+ m = Message()
+ m.add_byte(chr(_MSG_KEXDH_GEX_REQUEST))
+ m.add_int(self.min_bits)
+ m.add_int(self.preferred_bits)
+ m.add_int(self.max_bits)
+ self.transport._send_message(m)
+ self.transport._expect_packet(_MSG_KEXDH_GEX_GROUP)
+
+ def parse_next(self, ptype, m):
+ if ptype == _MSG_KEXDH_GEX_REQUEST:
+ return self._parse_kexdh_gex_request(m)
+ elif ptype == _MSG_KEXDH_GEX_GROUP:
+ return self._parse_kexdh_gex_group(m)
+ elif ptype == _MSG_KEXDH_GEX_INIT:
+ return self._parse_kexdh_gex_init(m)
+ elif ptype == _MSG_KEXDH_GEX_REPLY:
+ return self._parse_kexdh_gex_reply(m)
+ raise SSHException('KexGex asked to handle packet type %d' % ptype)
+
+
+ ### internals...
+
+
+ def _generate_x(self):
+ # generate an "x" (1 < x < (p-1)/2).
+ q = (self.p - 1) // 2
+ qnorm = util.deflate_long(q, 0)
+ qhbyte = ord(qnorm[0])
+ bytes = len(qnorm)
+ qmask = 0xff
+ while not (qhbyte & 0x80):
+ qhbyte <<= 1
+ qmask >>= 1
+ while True:
+ self.transport.randpool.stir()
+ x_bytes = self.transport.randpool.get_bytes(bytes)
+ x_bytes = chr(ord(x_bytes[0]) & qmask) + x_bytes[1:]
+ x = util.inflate_long(x_bytes, 1)
+ if (x > 1) and (x < q):
+ break
+ self.x = x
+
+ def _parse_kexdh_gex_request(self, m):
+ minbits = m.get_int()
+ preferredbits = m.get_int()
+ maxbits = m.get_int()
+ # smoosh the user's preferred size into our own limits
+ if preferredbits > self.max_bits:
+ preferredbits = self.max_bits
+ if preferredbits < self.min_bits:
+ preferredbits = self.min_bits
+ # fix min/max if they're inconsistent. technically, we could just pout
+ # and hang up, but there's no harm in giving them the benefit of the
+ # doubt and just picking a bitsize for them.
+ if minbits > preferredbits:
+ minbits = preferredbits
+ if maxbits < preferredbits:
+ maxbits = preferredbits
+ # now save a copy
+ self.min_bits = minbits
+ self.preferred_bits = preferredbits
+ self.max_bits = maxbits
+ # generate prime
+ pack = self.transport._get_modulus_pack()
+ if pack is None:
+ raise SSHException('Can\'t do server-side gex with no modulus pack')
+ self.transport._log(DEBUG, 'Picking p (%d <= %d <= %d bits)' % (minbits, preferredbits, maxbits))
+ self.g, self.p = pack.get_modulus(minbits, preferredbits, maxbits)
+ m = Message()
+ m.add_byte(chr(_MSG_KEXDH_GEX_GROUP))
+ m.add_mpint(self.p)
+ m.add_mpint(self.g)
+ self.transport._send_message(m)
+ self.transport._expect_packet(_MSG_KEXDH_GEX_INIT)
+
+ def _parse_kexdh_gex_group(self, m):
+ self.p = m.get_mpint()
+ self.g = m.get_mpint()
+ # reject if p's bit length < 1024 or > 8192
+ bitlen = util.bit_length(self.p)
+ if (bitlen < 1024) or (bitlen > 8192):
+ raise SSHException('Server-generated gex p (don\'t ask) is out of range (%d bits)' % bitlen)
+ self.transport._log(DEBUG, 'Got server p (%d bits)' % bitlen)
+ self._generate_x()
+ # now compute e = g^x mod p
+ self.e = pow(self.g, self.x, self.p)
+ m = Message()
+ m.add_byte(chr(_MSG_KEXDH_GEX_INIT))
+ m.add_mpint(self.e)
+ self.transport._send_message(m)
+ self.transport._expect_packet(_MSG_KEXDH_GEX_REPLY)
+
+ def _parse_kexdh_gex_init(self, m):
+ self.e = m.get_mpint()
+ if (self.e < 1) or (self.e > self.p - 1):
+ raise SSHException('Client kex "e" is out of range')
+ self._generate_x()
+ self.f = pow(self.g, self.x, self.p)
+ K = pow(self.e, self.x, self.p)
+ key = str(self.transport.get_server_key())
+ # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || min || n || max || p || g || e || f || K)
+ hm = Message()
+ hm.add(self.transport.remote_version, self.transport.local_version,
+ self.transport.remote_kex_init, self.transport.local_kex_init,
+ key)
+ hm.add_int(self.min_bits)
+ hm.add_int(self.preferred_bits)
+ hm.add_int(self.max_bits)
+ hm.add_mpint(self.p)
+ hm.add_mpint(self.g)
+ hm.add_mpint(self.e)
+ hm.add_mpint(self.f)
+ hm.add_mpint(K)
+ H = SHA.new(str(hm)).digest()
+ self.transport._set_K_H(K, H)
+ # sign it
+ sig = self.transport.get_server_key().sign_ssh_data(self.transport.randpool, H)
+ # send reply
+ m = Message()
+ m.add_byte(chr(_MSG_KEXDH_GEX_REPLY))
+ m.add_string(key)
+ m.add_mpint(self.f)
+ m.add_string(str(sig))
+ self.transport._send_message(m)
+ self.transport._activate_outbound()
+
+ def _parse_kexdh_gex_reply(self, m):
+ host_key = m.get_string()
+ self.f = m.get_mpint()
+ sig = m.get_string()
+ if (self.f < 1) or (self.f > self.p - 1):
+ raise SSHException('Server kex "f" is out of range')
+ K = pow(self.f, self.x, self.p)
+ # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || min || n || max || p || g || e || f || K)
+ hm = Message()
+ hm.add(self.transport.local_version, self.transport.remote_version,
+ self.transport.local_kex_init, self.transport.remote_kex_init,
+ host_key)
+ hm.add_int(self.min_bits)
+ hm.add_int(self.preferred_bits)
+ hm.add_int(self.max_bits)
+ hm.add_mpint(self.p)
+ hm.add_mpint(self.g)
+ hm.add_mpint(self.e)
+ hm.add_mpint(self.f)
+ hm.add_mpint(K)
+ self.transport._set_K_H(K, SHA.new(str(hm)).digest())
+ self.transport._verify_key(host_key, sig)
+ self.transport._activate_outbound()
diff --git a/paramiko/kex_group1.py b/paramiko/kex_group1.py
new file mode 100644
index 0000000..a13cf3a
--- /dev/null
+++ b/paramiko/kex_group1.py
@@ -0,0 +1,136 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Standard SSH key exchange ("kex" if you wanna sound cool). Diffie-Hellman of
+1024 bit key halves, using a known "p" prime and "g" generator.
+"""
+
+from Crypto.Hash import SHA
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.message import Message
+from paramiko.ssh_exception import SSHException
+
+
+_MSG_KEXDH_INIT, _MSG_KEXDH_REPLY = range(30, 32)
+
+# draft-ietf-secsh-transport-09.txt, page 17
+P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFFL
+G = 2
+
+
+class KexGroup1(object):
+
+ name = 'diffie-hellman-group1-sha1'
+
+ def __init__(self, transport):
+ self.transport = transport
+ self.x = 0L
+ self.e = 0L
+ self.f = 0L
+
+ def start_kex(self):
+ self._generate_x()
+ if self.transport.server_mode:
+ # compute f = g^x mod p, but don't send it yet
+ self.f = pow(G, self.x, P)
+ self.transport._expect_packet(_MSG_KEXDH_INIT)
+ return
+ # compute e = g^x mod p (where g=2), and send it
+ self.e = pow(G, self.x, P)
+ m = Message()
+ m.add_byte(chr(_MSG_KEXDH_INIT))
+ m.add_mpint(self.e)
+ self.transport._send_message(m)
+ self.transport._expect_packet(_MSG_KEXDH_REPLY)
+
+ def parse_next(self, ptype, m):
+ if self.transport.server_mode and (ptype == _MSG_KEXDH_INIT):
+ return self._parse_kexdh_init(m)
+ elif not self.transport.server_mode and (ptype == _MSG_KEXDH_REPLY):
+ return self._parse_kexdh_reply(m)
+ raise SSHException('KexGroup1 asked to handle packet type %d' % ptype)
+
+
+ ### internals...
+
+
+ def _generate_x(self):
+ # generate an "x" (1 < x < q), where q is (p-1)/2.
+ # p is a 128-byte (1024-bit) number, where the first 64 bits are 1.
+ # therefore q can be approximated as a 2^1023. we drop the subset of
+ # potential x where the first 63 bits are 1, because some of those will be
+ # larger than q (but this is a tiny tiny subset of potential x).
+ while 1:
+ self.transport.randpool.stir()
+ x_bytes = self.transport.randpool.get_bytes(128)
+ x_bytes = chr(ord(x_bytes[0]) & 0x7f) + x_bytes[1:]
+ if (x_bytes[:8] != '\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF') and \
+ (x_bytes[:8] != '\x00\x00\x00\x00\x00\x00\x00\x00'):
+ break
+ self.x = util.inflate_long(x_bytes)
+
+ def _parse_kexdh_reply(self, m):
+ # client mode
+ host_key = m.get_string()
+ self.f = m.get_mpint()
+ if (self.f < 1) or (self.f > P - 1):
+ raise SSHException('Server kex "f" is out of range')
+ sig = m.get_string()
+ K = pow(self.f, self.x, P)
+ # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K)
+ hm = Message()
+ hm.add(self.transport.local_version, self.transport.remote_version,
+ self.transport.local_kex_init, self.transport.remote_kex_init)
+ hm.add_string(host_key)
+ hm.add_mpint(self.e)
+ hm.add_mpint(self.f)
+ hm.add_mpint(K)
+ self.transport._set_K_H(K, SHA.new(str(hm)).digest())
+ self.transport._verify_key(host_key, sig)
+ self.transport._activate_outbound()
+
+ def _parse_kexdh_init(self, m):
+ # server mode
+ self.e = m.get_mpint()
+ if (self.e < 1) or (self.e > P - 1):
+ raise SSHException('Client kex "e" is out of range')
+ K = pow(self.e, self.x, P)
+ key = str(self.transport.get_server_key())
+ # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K)
+ hm = Message()
+ hm.add(self.transport.remote_version, self.transport.local_version,
+ self.transport.remote_kex_init, self.transport.local_kex_init)
+ hm.add_string(key)
+ hm.add_mpint(self.e)
+ hm.add_mpint(self.f)
+ hm.add_mpint(K)
+ H = SHA.new(str(hm)).digest()
+ self.transport._set_K_H(K, H)
+ # sign it
+ sig = self.transport.get_server_key().sign_ssh_data(self.transport.randpool, H)
+ # send reply
+ m = Message()
+ m.add_byte(chr(_MSG_KEXDH_REPLY))
+ m.add_string(key)
+ m.add_mpint(self.f)
+ m.add_string(str(sig))
+ self.transport._send_message(m)
+ self.transport._activate_outbound()
diff --git a/paramiko/logging22.py b/paramiko/logging22.py
new file mode 100644
index 0000000..ac11a73
--- /dev/null
+++ b/paramiko/logging22.py
@@ -0,0 +1,66 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Stub out logging on python < 2.3.
+"""
+
+
+DEBUG = 10
+INFO = 20
+WARNING = 30
+ERROR = 40
+CRITICAL = 50
+
+
+def getLogger(name):
+ return _logger
+
+
+class logger (object):
+ def __init__(self):
+ self.handlers = [ ]
+ self.level = ERROR
+
+ def setLevel(self, level):
+ self.level = level
+
+ def addHandler(self, h):
+ self.handlers.append(h)
+
+ def addFilter(self, filter):
+ pass
+
+ def log(self, level, text):
+ if level >= self.level:
+ for h in self.handlers:
+ h.f.write(text + '\n')
+ h.f.flush()
+
+class StreamHandler (object):
+ def __init__(self, f):
+ self.f = f
+
+ def setFormatter(self, f):
+ pass
+
+class Formatter (object):
+ def __init__(self, x, y):
+ pass
+
+_logger = logger()
diff --git a/paramiko/message.py b/paramiko/message.py
new file mode 100644
index 0000000..1d75a01
--- /dev/null
+++ b/paramiko/message.py
@@ -0,0 +1,301 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Implementation of an SSH2 "message".
+"""
+
+import struct
+import cStringIO
+
+from paramiko import util
+
+
+class Message (object):
+ """
+ An SSH2 I{Message} is a stream of bytes that encodes some combination of
+ strings, integers, bools, and infinite-precision integers (known in python
+ as I{long}s). This class builds or breaks down such a byte stream.
+
+ Normally you don't need to deal with anything this low-level, but it's
+ exposed for people implementing custom extensions, or features that
+ paramiko doesn't support yet.
+ """
+
+ def __init__(self, content=None):
+ """
+ Create a new SSH2 Message.
+
+ @param content: the byte stream to use as the Message content (passed
+ in only when decomposing a Message).
+ @type content: string
+ """
+ if content != None:
+ self.packet = cStringIO.StringIO(content)
+ else:
+ self.packet = cStringIO.StringIO()
+
+ def __str__(self):
+ """
+ Return the byte stream content of this Message, as a string.
+
+ @return: the contents of this Message.
+ @rtype: string
+ """
+ return self.packet.getvalue()
+
+ def __repr__(self):
+ """
+ Returns a string representation of this object, for debugging.
+
+ @rtype: string
+ """
+ return 'paramiko.Message(' + repr(self.packet.getvalue()) + ')'
+
+ def rewind(self):
+ """
+ Rewind the message to the beginning as if no items had been parsed
+ out of it yet.
+ """
+ self.packet.seek(0)
+
+ def get_remainder(self):
+ """
+ Return the bytes of this Message that haven't already been parsed and
+ returned.
+
+ @return: a string of the bytes not parsed yet.
+ @rtype: string
+ """
+ position = self.packet.tell()
+ remainder = self.packet.read()
+ self.packet.seek(position)
+ return remainder
+
+ def get_so_far(self):
+ """
+ Returns the bytes of this Message that have been parsed and returned.
+ The string passed into a Message's constructor can be regenerated by
+ concatenating C{get_so_far} and L{get_remainder}.
+
+ @return: a string of the bytes parsed so far.
+ @rtype: string
+ """
+ position = self.packet.tell()
+ self.rewind()
+ return self.packet.read(position)
+
+ def get_bytes(self, n):
+ """
+ Return the next C{n} bytes of the Message, without decomposing into
+ an int, string, etc. Just the raw bytes are returned.
+
+ @return: a string of the next C{n} bytes of the Message, or a string
+ of C{n} zero bytes, if there aren't C{n} bytes remaining.
+ @rtype: string
+ """
+ b = self.packet.read(n)
+ if len(b) < n:
+ return '\x00'*n
+ return b
+
+ def get_byte(self):
+ """
+ Return the next byte of the Message, without decomposing it. This
+ is equivalent to L{get_bytes(1)<get_bytes>}.
+
+ @return: the next byte of the Message, or C{'\000'} if there aren't
+ any bytes remaining.
+ @rtype: string
+ """
+ return self.get_bytes(1)
+
+ def get_boolean(self):
+ """
+ Fetch a boolean from the stream.
+
+ @return: C{True} or C{False} (from the Message).
+ @rtype: bool
+ """
+ b = self.get_bytes(1)
+ return b != '\x00'
+
+ def get_int(self):
+ """
+ Fetch an int from the stream.
+
+ @return: a 32-bit unsigned integer.
+ @rtype: int
+ """
+ return struct.unpack('>I', self.get_bytes(4))[0]
+
+ def get_int64(self):
+ """
+ Fetch a 64-bit int from the stream.
+
+ @return: a 64-bit unsigned integer.
+ @rtype: long
+ """
+ return struct.unpack('>Q', self.get_bytes(8))[0]
+
+ def get_mpint(self):
+ """
+ Fetch a long int (mpint) from the stream.
+
+ @return: an arbitrary-length integer.
+ @rtype: long
+ """
+ return util.inflate_long(self.get_string())
+
+ def get_string(self):
+ """
+ Fetch a string from the stream. This could be a byte string and may
+ contain unprintable characters. (It's not unheard of for a string to
+ contain another byte-stream Message.)
+
+ @return: a string.
+ @rtype: string
+ """
+ return self.get_bytes(self.get_int())
+
+ def get_list(self):
+ """
+ Fetch a list of strings from the stream. These are trivially encoded
+ as comma-separated values in a string.
+
+ @return: a list of strings.
+ @rtype: list of strings
+ """
+ return self.get_string().split(',')
+
+ def add_bytes(self, b):
+ """
+ Write bytes to the stream, without any formatting.
+
+ @param b: bytes to add
+ @type b: str
+ """
+ self.packet.write(b)
+ return self
+
+ def add_byte(self, b):
+ """
+ Write a single byte to the stream, without any formatting.
+
+ @param b: byte to add
+ @type b: str
+ """
+ self.packet.write(b)
+ return self
+
+ def add_boolean(self, b):
+ """
+ Add a boolean value to the stream.
+
+ @param b: boolean value to add
+ @type b: bool
+ """
+ if b:
+ self.add_byte('\x01')
+ else:
+ self.add_byte('\x00')
+ return self
+
+ def add_int(self, n):
+ """
+ Add an integer to the stream.
+
+ @param n: integer to add
+ @type n: int
+ """
+ self.packet.write(struct.pack('>I', n))
+ return self
+
+ def add_int64(self, n):
+ """
+ Add a 64-bit int to the stream.
+
+ @param n: long int to add
+ @type n: long
+ """
+ self.packet.write(struct.pack('>Q', n))
+ return self
+
+ def add_mpint(self, z):
+ """
+ Add a long int to the stream, encoded as an infinite-precision
+ integer. This method only works on positive numbers.
+
+ @param z: long int to add
+ @type z: long
+ """
+ self.add_string(util.deflate_long(z))
+ return self
+
+ def add_string(self, s):
+ """
+ Add a string to the stream.
+
+ @param s: string to add
+ @type s: str
+ """
+ self.add_int(len(s))
+ self.packet.write(s)
+ return self
+
+ def add_list(self, l):
+ """
+ Add a list of strings to the stream. They are encoded identically to
+ a single string of values separated by commas. (Yes, really, that's
+ how SSH2 does it.)
+
+ @param l: list of strings to add
+ @type l: list(str)
+ """
+ self.add_string(','.join(l))
+ return self
+
+ def _add(self, i):
+ if type(i) is str:
+ return self.add_string(i)
+ elif type(i) is int:
+ return self.add_int(i)
+ elif type(i) is long:
+ if i > 0xffffffffL:
+ return self.add_mpint(i)
+ else:
+ return self.add_int(i)
+ elif type(i) is bool:
+ return self.add_boolean(i)
+ elif type(i) is list:
+ return self.add_list(i)
+ else:
+ raise exception('Unknown type')
+
+ def add(self, *seq):
+ """
+ Add a sequence of items to the stream. The values are encoded based
+ on their type: str, int, bool, list, or long.
+
+ @param seq: the sequence of items
+ @type seq: sequence
+
+ @bug: longs are encoded non-deterministically. Don't use this method.
+ """
+ for item in seq:
+ self._add(item)
diff --git a/paramiko/packet.py b/paramiko/packet.py
new file mode 100644
index 0000000..277d68e
--- /dev/null
+++ b/paramiko/packet.py
@@ -0,0 +1,442 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Packetizer.
+"""
+
+import select
+import socket
+import struct
+import threading
+import time
+from Crypto.Hash import HMAC
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.ssh_exception import SSHException
+from paramiko.message import Message
+
+
+class NeedRekeyException (Exception):
+ pass
+
+
+class Packetizer (object):
+ """
+ Implementation of the base SSH packet protocol.
+ """
+
+ # READ the secsh RFC's before raising these values. if anything,
+ # they should probably be lower.
+ REKEY_PACKETS = pow(2, 30)
+ REKEY_BYTES = pow(2, 30)
+
+ def __init__(self, socket):
+ self.__socket = socket
+ self.__logger = None
+ self.__closed = False
+ self.__dump_packets = False
+ self.__need_rekey = False
+ self.__init_count = 0
+
+ # used for noticing when to re-key:
+ self.__sent_bytes = 0
+ self.__sent_packets = 0
+ self.__received_bytes = 0
+ self.__received_packets = 0
+ self.__received_packets_overflow = 0
+
+ # current inbound/outbound ciphering:
+ self.__block_size_out = 8
+ self.__block_size_in = 8
+ self.__mac_size_out = 0
+ self.__mac_size_in = 0
+ self.__block_engine_out = None
+ self.__block_engine_in = None
+ self.__mac_engine_out = None
+ self.__mac_engine_in = None
+ self.__mac_key_out = ''
+ self.__mac_key_in = ''
+ self.__compress_engine_out = None
+ self.__compress_engine_in = None
+ self.__sequence_number_out = 0L
+ self.__sequence_number_in = 0L
+
+ # lock around outbound writes (packet computation)
+ self.__write_lock = threading.RLock()
+
+ # keepalives:
+ self.__keepalive_interval = 0
+ self.__keepalive_last = time.time()
+ self.__keepalive_callback = None
+
+ def __del__(self):
+ # this is not guaranteed to be called, but we should try.
+ try:
+ self.__socket.close()
+ except:
+ pass
+
+ def set_log(self, log):
+ """
+ Set the python log object to use for logging.
+ """
+ self.__logger = log
+
+ def set_outbound_cipher(self, block_engine, block_size, mac_engine, mac_size, mac_key):
+ """
+ Switch outbound data cipher.
+ """
+ self.__block_engine_out = block_engine
+ self.__block_size_out = block_size
+ self.__mac_engine_out = mac_engine
+ self.__mac_size_out = mac_size
+ self.__mac_key_out = mac_key
+ self.__sent_bytes = 0
+ self.__sent_packets = 0
+ # wait until the reset happens in both directions before clearing rekey flag
+ self.__init_count |= 1
+ if self.__init_count == 3:
+ self.__init_count = 0
+ self.__need_rekey = False
+
+ def set_inbound_cipher(self, block_engine, block_size, mac_engine, mac_size, mac_key):
+ """
+ Switch inbound data cipher.
+ """
+ self.__block_engine_in = block_engine
+ self.__block_size_in = block_size
+ self.__mac_engine_in = mac_engine
+ self.__mac_size_in = mac_size
+ self.__mac_key_in = mac_key
+ self.__received_bytes = 0
+ self.__received_packets = 0
+ self.__received_packets_overflow = 0
+ # wait until the reset happens in both directions before clearing rekey flag
+ self.__init_count |= 2
+ if self.__init_count == 3:
+ self.__init_count = 0
+ self.__need_rekey = False
+
+ def set_outbound_compressor(self, compressor):
+ self.__compress_engine_out = compressor
+
+ def set_inbound_compressor(self, compressor):
+ self.__compress_engine_in = compressor
+
+ def close(self):
+ self.__closed = True
+
+ def set_hexdump(self, hexdump):
+ self.__dump_packets = hexdump
+
+ def get_hexdump(self):
+ return self.__dump_packets
+
+ def get_mac_size_in(self):
+ return self.__mac_size_in
+
+ def get_mac_size_out(self):
+ return self.__mac_size_out
+
+ def need_rekey(self):
+ """
+ Returns C{True} if a new set of keys needs to be negotiated. This
+ will be triggered during a packet read or write, so it should be
+ checked after every read or write, or at least after every few.
+
+ @return: C{True} if a new set of keys needs to be negotiated
+ """
+ return self.__need_rekey
+
+ def set_keepalive(self, interval, callback):
+ """
+ Turn on/off the callback keepalive. If C{interval} seconds pass with
+ no data read from or written to the socket, the callback will be
+ executed and the timer will be reset.
+ """
+ self.__keepalive_interval = interval
+ self.__keepalive_callback = callback
+ self.__keepalive_last = time.time()
+
+ def read_all(self, n, check_rekey=False):
+ """
+ Read as close to N bytes as possible, blocking as long as necessary.
+
+ @param n: number of bytes to read
+ @type n: int
+ @return: the data read
+ @rtype: str
+ @raise EOFError: if the socket was closed before all the bytes could
+ be read
+ """
+ if PY22:
+ return self._py22_read_all(n)
+ out = ''
+ while n > 0:
+ try:
+ x = self.__socket.recv(n)
+ if len(x) == 0:
+ raise EOFError()
+ out += x
+ n -= len(x)
+ except socket.timeout:
+ if self.__closed:
+ raise EOFError()
+ if check_rekey and (len(out) == 0) and self.__need_rekey:
+ raise NeedRekeyException()
+ self._check_keepalive()
+ return out
+
+ def write_all(self, out):
+ self.__keepalive_last = time.time()
+ while len(out) > 0:
+ try:
+ n = self.__socket.send(out)
+ except socket.timeout:
+ n = 0
+ if self.__closed:
+ n = -1
+ except Exception:
+ # could be: (32, 'Broken pipe')
+ n = -1
+ if n < 0:
+ raise EOFError()
+ if n == len(out):
+ return
+ out = out[n:]
+ return
+
+ def readline(self, timeout):
+ """
+ Read a line from the socket. This is done in a fairly inefficient
+ way, but is only used for initial banner negotiation so it's not worth
+ optimising.
+ """
+ buf = ''
+ while not '\n' in buf:
+ buf += self._read_timeout(timeout)
+ buf = buf[:-1]
+ if (len(buf) > 0) and (buf[-1] == '\r'):
+ buf = buf[:-1]
+ return buf
+
+ def send_message(self, data):
+ """
+ Write a block of data using the current cipher, as an SSH block.
+ """
+ # encrypt this sucka
+ randpool.stir()
+ data = str(data)
+ cmd = ord(data[0])
+ if cmd in MSG_NAMES:
+ cmd_name = MSG_NAMES[cmd]
+ else:
+ cmd_name = '$%x' % cmd
+ self._log(DEBUG, 'Write packet <%s>, length %d' % (cmd_name, len(data)))
+ if self.__compress_engine_out is not None:
+ data = self.__compress_engine_out(data)
+ packet = self._build_packet(data)
+ if self.__dump_packets:
+ self._log(DEBUG, util.format_binary(packet, 'OUT: '))
+ self.__write_lock.acquire()
+ try:
+ if self.__block_engine_out != None:
+ out = self.__block_engine_out.encrypt(packet)
+ else:
+ out = packet
+ # + mac
+ if self.__block_engine_out != None:
+ payload = struct.pack('>I', self.__sequence_number_out) + packet
+ out += HMAC.HMAC(self.__mac_key_out, payload, self.__mac_engine_out).digest()[:self.__mac_size_out]
+ self.__sequence_number_out = (self.__sequence_number_out + 1) & 0xffffffffL
+ self.write_all(out)
+
+ self.__sent_bytes += len(out)
+ self.__sent_packets += 1
+ if ((self.__sent_packets >= self.REKEY_PACKETS) or (self.__sent_bytes >= self.REKEY_BYTES)) \
+ and not self.__need_rekey:
+ # only ask once for rekeying
+ self._log(DEBUG, 'Rekeying (hit %d packets, %d bytes sent)' %
+ (self.__sent_packets, self.__sent_bytes))
+ self.__received_packets_overflow = 0
+ self._trigger_rekey()
+ finally:
+ self.__write_lock.release()
+
+ def read_message(self):
+ """
+ Only one thread should ever be in this function (no other locking is
+ done).
+
+ @raise SSHException: if the packet is mangled
+ @raise NeedRekeyException: if the transport should rekey
+ """
+ header = self.read_all(self.__block_size_in, check_rekey=True)
+ if self.__block_engine_in != None:
+ header = self.__block_engine_in.decrypt(header)
+ if self.__dump_packets:
+ self._log(DEBUG, util.format_binary(header, 'IN: '));
+ packet_size = struct.unpack('>I', header[:4])[0]
+ # leftover contains decrypted bytes from the first block (after the length field)
+ leftover = header[4:]
+ if (packet_size - len(leftover)) % self.__block_size_in != 0:
+ raise SSHException('Invalid packet blocking')
+ buf = self.read_all(packet_size + self.__mac_size_in - len(leftover))
+ packet = buf[:packet_size - len(leftover)]
+ post_packet = buf[packet_size - len(leftover):]
+ if self.__block_engine_in != None:
+ packet = self.__block_engine_in.decrypt(packet)
+ if self.__dump_packets:
+ self._log(DEBUG, util.format_binary(packet, 'IN: '));
+ packet = leftover + packet
+
+ if self.__mac_size_in > 0:
+ mac = post_packet[:self.__mac_size_in]
+ mac_payload = struct.pack('>II', self.__sequence_number_in, packet_size) + packet
+ my_mac = HMAC.HMAC(self.__mac_key_in, mac_payload, self.__mac_engine_in).digest()[:self.__mac_size_in]
+ if my_mac != mac:
+ raise SSHException('Mismatched MAC')
+ padding = ord(packet[0])
+ payload = packet[1:packet_size - padding]
+ randpool.add_event(packet[packet_size - padding])
+ if self.__dump_packets:
+ self._log(DEBUG, 'Got payload (%d bytes, %d padding)' % (packet_size, padding))
+
+ if self.__compress_engine_in is not None:
+ payload = self.__compress_engine_in(payload)
+
+ msg = Message(payload[1:])
+ msg.seqno = self.__sequence_number_in
+ self.__sequence_number_in = (self.__sequence_number_in + 1) & 0xffffffffL
+
+ # check for rekey
+ self.__received_bytes += packet_size + self.__mac_size_in + 4
+ self.__received_packets += 1
+ if self.__need_rekey:
+ # we've asked to rekey -- give them 20 packets to comply before
+ # dropping the connection
+ self.__received_packets_overflow += 1
+ if self.__received_packets_overflow >= 20:
+ raise SSHException('Remote transport is ignoring rekey requests')
+ elif (self.__received_packets >= self.REKEY_PACKETS) or \
+ (self.__received_bytes >= self.REKEY_BYTES):
+ # only ask once for rekeying
+ self._log(DEBUG, 'Rekeying (hit %d packets, %d bytes received)' %
+ (self.__received_packets, self.__received_bytes))
+ self.__received_packets_overflow = 0
+ self._trigger_rekey()
+
+ cmd = ord(payload[0])
+ if cmd in MSG_NAMES:
+ cmd_name = MSG_NAMES[cmd]
+ else:
+ cmd_name = '$%x' % cmd
+ self._log(DEBUG, 'Read packet <%s>, length %d' % (cmd_name, len(payload)))
+ return cmd, msg
+
+
+ ########## protected
+
+
+ def _log(self, level, msg):
+ if self.__logger is None:
+ return
+ if issubclass(type(msg), list):
+ for m in msg:
+ self.__logger.log(level, m)
+ else:
+ self.__logger.log(level, msg)
+
+ def _check_keepalive(self):
+ if (not self.__keepalive_interval) or (not self.__block_engine_out) or \
+ self.__need_rekey:
+ # wait till we're encrypting, and not in the middle of rekeying
+ return
+ now = time.time()
+ if now > self.__keepalive_last + self.__keepalive_interval:
+ self.__keepalive_callback()
+ self.__keepalive_last = now
+
+ def _py22_read_all(self, n):
+ out = ''
+ while n > 0:
+ r, w, e = select.select([self.__socket], [], [], 0.1)
+ if self.__socket not in r:
+ if self.__closed:
+ raise EOFError()
+ self._check_keepalive()
+ else:
+ x = self.__socket.recv(n)
+ if len(x) == 0:
+ raise EOFError()
+ out += x
+ n -= len(x)
+ return out
+
+ def _py22_read_timeout(self, timeout):
+ start = time.time()
+ while True:
+ r, w, e = select.select([self.__socket], [], [], 0.1)
+ if self.__socket in r:
+ x = self.__socket.recv(1)
+ if len(x) == 0:
+ raise EOFError()
+ return x
+ if self.__closed:
+ raise EOFError()
+ now = time.time()
+ if now - start >= timeout:
+ raise socket.timeout()
+
+ def _read_timeout(self, timeout):
+ if PY22:
+ return self._py22_read_timeout(n)
+ start = time.time()
+ while True:
+ try:
+ x = self.__socket.recv(1)
+ if len(x) == 0:
+ raise EOFError()
+ return x
+ except socket.timeout:
+ pass
+ if self.__closed:
+ raise EOFError()
+ now = time.time()
+ if now - start >= timeout:
+ raise socket.timeout()
+
+ def _build_packet(self, payload):
+ # pad up at least 4 bytes, to nearest block-size (usually 8)
+ bsize = self.__block_size_out
+ padding = 3 + bsize - ((len(payload) + 8) % bsize)
+ packet = struct.pack('>IB', len(payload) + padding + 1, padding)
+ packet += payload
+ if self.__block_engine_out is not None:
+ packet += randpool.get_bytes(padding)
+ else:
+ # cute trick i caught openssh doing: if we're not encrypting,
+ # don't waste random bytes for the padding
+ packet += (chr(0) * padding)
+ return packet
+
+ def _trigger_rekey(self):
+ # outside code should check for this flag
+ self.__need_rekey = True
diff --git a/paramiko/pipe.py b/paramiko/pipe.py
new file mode 100644
index 0000000..cc28f43
--- /dev/null
+++ b/paramiko/pipe.py
@@ -0,0 +1,105 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Abstraction of a one-way pipe where the read end can be used in select().
+Normally this is trivial, but Windows makes it nearly impossible.
+"""
+
+import sys
+import os
+import socket
+
+
+def make_pipe ():
+ if sys.platform[:3] != 'win':
+ return PosixPipe()
+ return WindowsPipe()
+
+
+class PosixPipe (object):
+ def __init__ (self):
+ self._rfd, self._wfd = os.pipe()
+ self._set = False
+ self._forever = False
+
+ def close (self):
+ os.close(self._rfd)
+ os.close(self._wfd)
+
+ def fileno (self):
+ return self._rfd
+
+ def clear (self):
+ if not self._set or self._forever:
+ return
+ os.read(self._rfd, 1)
+ self._set = False
+
+ def set (self):
+ if self._set:
+ return
+ self._set = True
+ os.write(self._wfd, '*')
+
+ def set_forever (self):
+ self._forever = True
+ self.set()
+
+
+class WindowsPipe (object):
+ """
+ On Windows, only an OS-level "WinSock" may be used in select(), but reads
+ and writes must be to the actual socket object.
+ """
+ def __init__ (self):
+ serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ serv.bind(('127.0.0.1', 0))
+ serv.listen(1)
+
+ # need to save sockets in _rsock/_wsock so they don't get closed
+ self._rsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self._rsock.connect(('127.0.0.1', serv.getsockname()[1]))
+
+ self._wsock, addr = serv.accept()
+ serv.close()
+ self._set = False
+ self._forever = False
+
+ def close (self):
+ self._rsock.close()
+ self._wsock.close()
+
+ def fileno (self):
+ return self._rsock.fileno()
+
+ def clear (self):
+ if not self._set or self._forever:
+ return
+ self._rsock.recv(1)
+ self._set = False
+
+ def set (self):
+ if self._set:
+ return
+ self._set = True
+ self._wsock.send('*')
+
+ def set_forever (self):
+ self._forever = True
+ self.set()
diff --git a/paramiko/pkey.py b/paramiko/pkey.py
new file mode 100644
index 0000000..75db8e5
--- /dev/null
+++ b/paramiko/pkey.py
@@ -0,0 +1,339 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Common API for all public keys.
+"""
+
+import base64
+import os
+
+from Crypto.Hash import MD5
+from Crypto.Cipher import DES3
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.message import Message
+from paramiko.ssh_exception import SSHException, PasswordRequiredException
+
+
+class PKey (object):
+ """
+ Base class for public keys.
+ """
+
+ # known encryption types for private key files:
+ _CIPHER_TABLE = {
+ 'DES-EDE3-CBC': { 'cipher': DES3, 'keysize': 24, 'blocksize': 8, 'mode': DES3.MODE_CBC }
+ }
+
+
+ def __init__(self, msg=None, data=None):
+ """
+ Create a new instance of this public key type. If C{msg} is given,
+ the key's public part(s) will be filled in from the message. If
+ C{data} is given, the key's public part(s) will be filled in from
+ the string.
+
+ @param msg: an optional SSH L{Message} containing a public key of this
+ type.
+ @type msg: L{Message}
+ @param data: an optional string containing a public key of this type
+ @type data: str
+
+ @raise SSHException: if a key cannot be created from the C{data} or
+ C{msg} given, or no key was passed in.
+ """
+ pass
+
+ def __str__(self):
+ """
+ Return a string of an SSH L{Message} made up of the public part(s) of
+ this key. This string is suitable for passing to L{__init__} to
+ re-create the key object later.
+
+ @return: string representation of an SSH key message.
+ @rtype: str
+ """
+ return ''
+
+ def __cmp__(self, other):
+ """
+ Compare this key to another. Returns 0 if this key is equivalent to
+ the given key, or non-0 if they are different. Only the public parts
+ of the key are compared, so a public key will compare equal to its
+ corresponding private key.
+
+ @param other: key to compare to.
+ @type other: L{PKey}
+ @return: 0 if the two keys are equivalent, non-0 otherwise.
+ @rtype: int
+ """
+ hs = hash(self)
+ ho = hash(other)
+ if hs != ho:
+ return cmp(hs, ho)
+ return cmp(str(self), str(other))
+
+ def get_name(self):
+ """
+ Return the name of this private key implementation.
+
+ @return: name of this private key type, in SSH terminology (for
+ example, C{"ssh-rsa"}).
+ @rtype: str
+ """
+ return ''
+
+ def get_bits(self):
+ """
+ Return the number of significant bits in this key. This is useful
+ for judging the relative security of a key.
+
+ @return: bits in the key.
+ @rtype: int
+ """
+ return 0
+
+ def can_sign(self):
+ """
+ Return C{True} if this key has the private part necessary for signing
+ data.
+
+ @return: C{True} if this is a private key.
+ @rtype: bool
+ """
+ return False
+
+ def get_fingerprint(self):
+ """
+ Return an MD5 fingerprint of the public part of this key. Nothing
+ secret is revealed.
+
+ @return: a 16-byte string (binary) of the MD5 fingerprint, in SSH
+ format.
+ @rtype: str
+ """
+ return MD5.new(str(self)).digest()
+
+ def get_base64(self):
+ """
+ Return a base64 string containing the public part of this key. Nothing
+ secret is revealed. This format is compatible with that used to store
+ public key files or recognized host keys.
+
+ @return: a base64 string containing the public part of the key.
+ @rtype: str
+
+ @since: fearow
+ """
+ return base64.encodestring(str(self)).replace('\n', '')
+
+ def sign_ssh_data(self, randpool, data):
+ """
+ Sign a blob of data with this private key, and return a L{Message}
+ representing an SSH signature message.
+
+ @param randpool: a secure random number generator.
+ @type randpool: L{Crypto.Util.randpool.RandomPool}
+ @param data: the data to sign.
+ @type data: str
+ @return: an SSH signature message.
+ @rtype: L{Message}
+ """
+ return ''
+
+ def verify_ssh_sig(self, data, msg):
+ """
+ Given a blob of data, and an SSH message representing a signature of
+ that data, verify that it was signed with this key.
+
+ @param data: the data that was signed.
+ @type data: str
+ @param msg: an SSH signature message
+ @type msg: L{Message}
+ @return: C{True} if the signature verifies correctly; C{False}
+ otherwise.
+ @rtype: boolean
+ """
+ return False
+
+ def from_private_key_file(cl, filename, password=None):
+ """
+ Create a key object by reading a private key file. If the private
+ key is encrypted and C{password} is not C{None}, the given password
+ will be used to decrypt the key (otherwise L{PasswordRequiredException}
+ is thrown). Through the magic of python, this factory method will
+ exist in all subclasses of PKey (such as L{RSAKey} or L{DSSKey}), but
+ is useless on the abstract PKey class.
+
+ @param filename: name of the file to read.
+ @type filename: str
+ @param password: an optional password to use to decrypt the key file,
+ if it's encrypted
+ @type password: str
+ @return: a new key object based on the given private key.
+ @rtype: L{PKey}
+
+ @raise IOError: if there was an error reading the file.
+ @raise PasswordRequiredException: if the private key file is
+ encrypted, and C{password} is C{None}.
+ @raise SSHException: if the key file is invalid.
+
+ @since: fearow
+ """
+ key = cl(filename=filename, password=password)
+ return key
+ from_private_key_file = classmethod(from_private_key_file)
+
+ def write_private_key_file(self, filename, password=None):
+ """
+ Write private key contents into a file. If the password is not
+ C{None}, the key is encrypted before writing.
+
+ @param filename: name of the file to write.
+ @type filename: str
+ @param password: an optional password to use to encrypt the key file.
+ @type password: str
+
+ @raise IOError: if there was an error writing the file.
+ @raise SSHException: if the key is invalid.
+
+ @since: fearow
+ """
+ raise exception('Not implemented in PKey')
+
+ def _read_private_key_file(self, tag, filename, password=None):
+ """
+ Read an SSH2-format private key file, looking for a string of the type
+ C{"BEGIN xxx PRIVATE KEY"} for some C{xxx}, base64-decode the text we
+ find, and return it as a string. If the private key is encrypted and
+ C{password} is not C{None}, the given password will be used to decrypt
+ the key (otherwise L{PasswordRequiredException} is thrown).
+
+ @param tag: C{"RSA"} or C{"DSA"}, the tag used to mark the data block.
+ @type tag: str
+ @param filename: name of the file to read.
+ @type filename: str
+ @param password: an optional password to use to decrypt the key file,
+ if it's encrypted.
+ @type password: str
+ @return: data blob that makes up the private key.
+ @rtype: str
+
+ @raise IOError: if there was an error reading the file.
+ @raise PasswordRequiredException: if the private key file is
+ encrypted, and C{password} is C{None}.
+ @raise SSHException: if the key file is invalid.
+ """
+ f = open(filename, 'r')
+ lines = f.readlines()
+ f.close()
+ start = 0
+ while (start < len(lines)) and (lines[start].strip() != '-----BEGIN ' + tag + ' PRIVATE KEY-----'):
+ start += 1
+ if start >= len(lines):
+ raise SSHException('not a valid ' + tag + ' private key file')
+ # parse any headers first
+ headers = {}
+ start += 1
+ while start < len(lines):
+ l = lines[start].split(': ')
+ if len(l) == 1:
+ break
+ headers[l[0].lower()] = l[1].strip()
+ start += 1
+ # find end
+ end = start
+ while (lines[end].strip() != '-----END ' + tag + ' PRIVATE KEY-----') and (end < len(lines)):
+ end += 1
+ # if we trudged to the end of the file, just try to cope.
+ try:
+ data = base64.decodestring(''.join(lines[start:end]))
+ except binascii.Error, e:
+ raise SSHException('base64 decoding error: ' + str(e))
+ if not headers.has_key('proc-type'):
+ # unencryped: done
+ return data
+ # encrypted keyfile: will need a password
+ if headers['proc-type'] != '4,ENCRYPTED':
+ raise SSHException('Unknown private key structure "%s"' % headers['proc-type'])
+ try:
+ encryption_type, saltstr = headers['dek-info'].split(',')
+ except:
+ raise SSHException('Can\'t parse DEK-info in private key file')
+ if not self._CIPHER_TABLE.has_key(encryption_type):
+ raise SSHException('Unknown private key cipher "%s"' % encryption_type)
+ # if no password was passed in, raise an exception pointing out that we need one
+ if password is None:
+ raise PasswordRequiredException('Private key file is encrypted')
+ cipher = self._CIPHER_TABLE[encryption_type]['cipher']
+ keysize = self._CIPHER_TABLE[encryption_type]['keysize']
+ mode = self._CIPHER_TABLE[encryption_type]['mode']
+ salt = util.unhexify(saltstr)
+ key = util.generate_key_bytes(MD5, salt, password, keysize)
+ return cipher.new(key, mode, salt).decrypt(data)
+
+ def _write_private_key_file(self, tag, filename, data, password=None):
+ """
+ Write an SSH2-format private key file in a form that can be read by
+ paramiko or openssh. If no password is given, the key is written in
+ a trivially-encoded format (base64) which is completely insecure. If
+ a password is given, DES-EDE3-CBC is used.
+
+ @param tag: C{"RSA"} or C{"DSA"}, the tag used to mark the data block.
+ @type tag: str
+ @param filename: name of the file to write.
+ @type filename: str
+ @param data: data blob that makes up the private key.
+ @type data: str
+ @param password: an optional password to use to encrypt the file.
+ @type password: str
+
+ @raise IOError: if there was an error writing the file.
+ """
+ f = open(filename, 'w', 0600)
+ # grrr... the mode doesn't always take hold
+ os.chmod(filename, 0600)
+ f.write('-----BEGIN %s PRIVATE KEY-----\n' % tag)
+ if password is not None:
+ # since we only support one cipher here, use it
+ cipher_name = self._CIPHER_TABLE.keys()[0]
+ cipher = self._CIPHER_TABLE[cipher_name]['cipher']
+ keysize = self._CIPHER_TABLE[cipher_name]['keysize']
+ blocksize = self._CIPHER_TABLE[cipher_name]['blocksize']
+ mode = self._CIPHER_TABLE[cipher_name]['mode']
+ salt = randpool.get_bytes(8)
+ key = util.generate_key_bytes(MD5, salt, password, keysize)
+ if len(data) % blocksize != 0:
+ n = blocksize - len(data) % blocksize
+ #data += randpool.get_bytes(n)
+ # that would make more sense ^, but it confuses openssh.
+ data += '\0' * n
+ data = cipher.new(key, mode, salt).encrypt(data)
+ f.write('Proc-Type: 4,ENCRYPTED\n')
+ f.write('DEK-Info: %s,%s\n' % (cipher_name, util.hexify(salt)))
+ f.write('\n')
+ s = base64.encodestring(data)
+ # re-wrap to 64-char lines
+ s = ''.join(s.split('\n'))
+ s = '\n'.join([s[i : i+64] for i in range(0, len(s), 64)])
+ f.write(s)
+ f.write('\n')
+ f.write('-----END %s PRIVATE KEY-----\n' % tag)
+ f.close()
diff --git a/paramiko/primes.py b/paramiko/primes.py
new file mode 100644
index 0000000..3677394
--- /dev/null
+++ b/paramiko/primes.py
@@ -0,0 +1,148 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Utility functions for dealing with primes.
+"""
+
+from Crypto.Util import number
+
+from paramiko import util
+
+
+def _generate_prime(bits, randpool):
+ "primtive attempt at prime generation"
+ hbyte_mask = pow(2, bits % 8) - 1
+ while True:
+ # loop catches the case where we increment n into a higher bit-range
+ x = randpool.get_bytes((bits+7) // 8)
+ if hbyte_mask > 0:
+ x = chr(ord(x[0]) & hbyte_mask) + x[1:]
+ n = util.inflate_long(x, 1)
+ n |= 1
+ n |= (1 << (bits - 1))
+ while not number.isPrime(n):
+ n += 2
+ if util.bit_length(n) == bits:
+ return n
+
+def _roll_random(rpool, n):
+ "returns a random # from 0 to N-1"
+ bits = util.bit_length(n-1)
+ bytes = (bits + 7) // 8
+ hbyte_mask = pow(2, bits % 8) - 1
+
+ # so here's the plan:
+ # we fetch as many random bits as we'd need to fit N-1, and if the
+ # generated number is >= N, we try again. in the worst case (N-1 is a
+ # power of 2), we have slightly better than 50% odds of getting one that
+ # fits, so i can't guarantee that this loop will ever finish, but the odds
+ # of it looping forever should be infinitesimal.
+ while True:
+ x = rpool.get_bytes(bytes)
+ if hbyte_mask > 0:
+ x = chr(ord(x[0]) & hbyte_mask) + x[1:]
+ num = util.inflate_long(x, 1)
+ if num < n:
+ return num
+
+
+class ModulusPack (object):
+ """
+ convenience object for holding the contents of the /etc/ssh/moduli file,
+ on systems that have such a file.
+ """
+
+ def __init__(self, rpool):
+ # pack is a hash of: bits -> [ (generator, modulus) ... ]
+ self.pack = {}
+ self.discarded = []
+ self.randpool = rpool
+
+ def _parse_modulus(self, line):
+ timestamp, type, tests, tries, size, generator, modulus = line.split()
+ type = int(type)
+ tests = int(tests)
+ tries = int(tries)
+ size = int(size)
+ generator = int(generator)
+ modulus = long(modulus, 16)
+
+ # weed out primes that aren't at least:
+ # type 2 (meets basic structural requirements)
+ # test 4 (more than just a small-prime sieve)
+ # tries < 100 if test & 4 (at least 100 tries of miller-rabin)
+ if (type < 2) or (tests < 4) or ((tests & 4) and (tests < 8) and (tries < 100)):
+ self.discarded.append((modulus, 'does not meet basic requirements'))
+ return
+ if generator == 0:
+ generator = 2
+
+ # there's a bug in the ssh "moduli" file (yeah, i know: shock! dismay!
+ # call cnn!) where it understates the bit lengths of these primes by 1.
+ # this is okay.
+ bl = util.bit_length(modulus)
+ if (bl != size) and (bl != size + 1):
+ self.discarded.append((modulus, 'incorrectly reported bit length %d' % size))
+ return
+ if not self.pack.has_key(bl):
+ self.pack[bl] = []
+ self.pack[bl].append((generator, modulus))
+
+ def read_file(self, filename):
+ """
+ @raise IOError: passed from any file operations that fail.
+ """
+ self.pack = {}
+ f = open(filename, 'r')
+ for line in f:
+ line = line.strip()
+ if (len(line) == 0) or (line[0] == '#'):
+ continue
+ try:
+ self._parse_modulus(line)
+ except:
+ continue
+ f.close()
+
+ def get_modulus(self, min, prefer, max):
+ bitsizes = self.pack.keys()
+ bitsizes.sort()
+ if len(bitsizes) == 0:
+ raise SSHException('no moduli available')
+ good = -1
+ # find nearest bitsize >= preferred
+ for b in bitsizes:
+ if (b >= prefer) and (b < max) and ((b < good) or (good == -1)):
+ good = b
+ # if that failed, find greatest bitsize >= min
+ if good == -1:
+ for b in bitsizes:
+ if (b >= min) and (b < max) and (b > good):
+ good = b
+ if good == -1:
+ # their entire (min, max) range has no intersection with our range.
+ # if their range is below ours, pick the smallest. otherwise pick
+ # the largest. it'll be out of their range requirement either way,
+ # but we'll be sending them the closest one we have.
+ good = bitsizes[0]
+ if min > good:
+ good = bitsizes[-1]
+ # now pick a random modulus of this bitsize
+ n = _roll_random(self.randpool, len(self.pack[good]))
+ return self.pack[good][n]
diff --git a/paramiko/rsakey.py b/paramiko/rsakey.py
new file mode 100644
index 0000000..780ea1b
--- /dev/null
+++ b/paramiko/rsakey.py
@@ -0,0 +1,165 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+L{RSAKey}
+"""
+
+from Crypto.PublicKey import RSA
+from Crypto.Hash import SHA, MD5
+from Crypto.Cipher import DES3
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.message import Message
+from paramiko.ber import BER, BERException
+from paramiko.pkey import PKey
+from paramiko.ssh_exception import SSHException
+
+
+class RSAKey (PKey):
+ """
+ Representation of an RSA key which can be used to sign and verify SSH2
+ data.
+ """
+
+ def __init__(self, msg=None, data=None, filename=None, password=None, vals=None):
+ if filename is not None:
+ self._from_private_key_file(filename, password)
+ return
+ if (msg is None) and (data is not None):
+ msg = Message(data)
+ if vals is not None:
+ self.e, self.n = vals
+ else:
+ if msg is None:
+ raise SSHException('Key object may not be empty')
+ if msg.get_string() != 'ssh-rsa':
+ raise SSHException('Invalid key')
+ self.e = msg.get_mpint()
+ self.n = msg.get_mpint()
+ self.size = util.bit_length(self.n)
+
+ def __str__(self):
+ m = Message()
+ m.add_string('ssh-rsa')
+ m.add_mpint(self.e)
+ m.add_mpint(self.n)
+ return str(m)
+
+ def __hash__(self):
+ h = hash(self.get_name())
+ h = h * 37 + hash(self.e)
+ h = h * 37 + hash(self.n)
+ return hash(h)
+
+ def get_name(self):
+ return 'ssh-rsa'
+
+ def get_bits(self):
+ return self.size
+
+ def can_sign(self):
+ return hasattr(self, 'd')
+
+ def sign_ssh_data(self, rpool, data):
+ digest = SHA.new(data).digest()
+ rsa = RSA.construct((long(self.n), long(self.e), long(self.d)))
+ sig = util.deflate_long(rsa.sign(self._pkcs1imify(digest), '')[0], 0)
+ m = Message()
+ m.add_string('ssh-rsa')
+ m.add_string(sig)
+ return m
+
+ def verify_ssh_sig(self, data, msg):
+ if msg.get_string() != 'ssh-rsa':
+ return False
+ sig = util.inflate_long(msg.get_string(), True)
+ # verify the signature by SHA'ing the data and encrypting it using the
+ # public key. some wackiness ensues where we "pkcs1imify" the 20-byte
+ # hash into a string as long as the RSA key.
+ hash = util.inflate_long(self._pkcs1imify(SHA.new(data).digest()), True)
+ rsa = RSA.construct((long(self.n), long(self.e)))
+ return rsa.verify(hash, (sig,))
+
+ def write_private_key_file(self, filename, password=None):
+ keylist = [ 0, self.n, self.e, self.d, self.p, self.q,
+ self.d % (self.p - 1), self.d % (self.q - 1),
+ util.mod_inverse(self.q, self.p) ]
+ try:
+ b = BER()
+ b.encode(keylist)
+ except BERException:
+ raise SSHException('Unable to create ber encoding of key')
+ self._write_private_key_file('RSA', filename, str(b), password)
+
+ def generate(bits, progress_func=None):
+ """
+ Generate a new private RSA key. This factory function can be used to
+ generate a new host key or authentication key.
+
+ @param bits: number of bits the generated key should be.
+ @type bits: int
+ @param progress_func: an optional function to call at key points in
+ key generation (used by C{pyCrypto.PublicKey}).
+ @type progress_func: function
+ @return: new private key
+ @rtype: L{RSAKey}
+
+ @since: fearow
+ """
+ randpool.stir()
+ rsa = RSA.generate(bits, randpool.get_bytes, progress_func)
+ key = RSAKey(vals=(rsa.e, rsa.n))
+ key.d = rsa.d
+ key.p = rsa.p
+ key.q = rsa.q
+ return key
+ generate = staticmethod(generate)
+
+
+ ### internals...
+
+
+ def _pkcs1imify(self, data):
+ """
+ turn a 20-byte SHA1 hash into a blob of data as large as the key's N,
+ using PKCS1's \"emsa-pkcs1-v1_5\" encoding. totally bizarre.
+ """
+ SHA1_DIGESTINFO = '\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14'
+ size = len(util.deflate_long(self.n, 0))
+ filler = '\xff' * (size - len(SHA1_DIGESTINFO) - len(data) - 3)
+ return '\x00\x01' + filler + '\x00' + SHA1_DIGESTINFO + data
+
+ def _from_private_key_file(self, filename, password):
+ # private key file contains:
+ # RSAPrivateKey = { version = 0, n, e, d, p, q, d mod p-1, d mod q-1, q**-1 mod p }
+ data = self._read_private_key_file('RSA', filename, password)
+ try:
+ keylist = BER(data).decode()
+ except BERException:
+ raise SSHException('Unable to parse key file')
+ if (type(keylist) is not list) or (len(keylist) < 4) or (keylist[0] != 0):
+ raise SSHException('Not a valid RSA private key file (bad ber encoding)')
+ self.n = keylist[1]
+ self.e = keylist[2]
+ self.d = keylist[3]
+ # not really needed
+ self.p = keylist[4]
+ self.q = keylist[5]
+ self.size = util.bit_length(self.n)
diff --git a/paramiko/server.py b/paramiko/server.py
new file mode 100644
index 0000000..a0e3988
--- /dev/null
+++ b/paramiko/server.py
@@ -0,0 +1,527 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+L{ServerInterface} is an interface to override for server support.
+"""
+
+import threading
+from paramiko.common import *
+from paramiko import util
+
+
+class InteractiveQuery (object):
+ """
+ A query (set of prompts) for a user during interactive authentication.
+ """
+
+ def __init__(self, name='', instructions='', *prompts):
+ """
+ Create a new interactive query to send to the client. The name and
+ instructions are optional, but are generally displayed to the end
+ user. A list of prompts may be included, or they may be added via
+ the L{add_prompt} method.
+
+ @param name: name of this query
+ @type name: str
+ @param instructions: user instructions (usually short) about this query
+ @type instructions: str
+ """
+ self.name = name
+ self.instructions = instructions
+ self.prompts = []
+ for x in prompts:
+ if (type(x) is str) or (type(x) is unicode):
+ self.add_prompt(x)
+ else:
+ self.add_prompt(x[0], x[1])
+
+ def add_prompt(self, prompt, echo=True):
+ """
+ Add a prompt to this query. The prompt should be a (reasonably short)
+ string. Multiple prompts can be added to the same query.
+
+ @param prompt: the user prompt
+ @type prompt: str
+ @param echo: C{True} (default) if the user's response should be echoed;
+ C{False} if not (for a password or similar)
+ @type echo: bool
+ """
+ self.prompts.append((prompt, echo))
+
+
+class ServerInterface (object):
+ """
+ This class defines an interface for controlling the behavior of paramiko
+ in server mode.
+
+ Methods on this class are called from paramiko's primary thread, so you
+ shouldn't do too much work in them. (Certainly nothing that blocks or
+ sleeps.)
+ """
+
+ def check_channel_request(self, kind, chanid):
+ """
+ Determine if a channel request of a given type will be granted, and
+ return C{OPEN_SUCCEEDED} or an error code. This method is
+ called in server mode when the client requests a channel, after
+ authentication is complete.
+
+ If you allow channel requests (and an ssh server that didn't would be
+ useless), you should also override some of the channel request methods
+ below, which are used to determine which services will be allowed on
+ a given channel:
+ - L{check_channel_pty_request}
+ - L{check_channel_shell_request}
+ - L{check_channel_subsystem_request}
+ - L{check_channel_window_change_request}
+
+ The C{chanid} parameter is a small number that uniquely identifies the
+ channel within a L{Transport}. A L{Channel} object is not created
+ unless this method returns C{OPEN_SUCCEEDED} -- once a
+ L{Channel} object is created, you can call L{Channel.get_id} to
+ retrieve the channel ID.
+
+ The return value should either be C{OPEN_SUCCEEDED} (or
+ C{0}) to allow the channel request, or one of the following error
+ codes to reject it:
+ - C{OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED}
+ - C{OPEN_FAILED_CONNECT_FAILED}
+ - C{OPEN_FAILED_UNKNOWN_CHANNEL_TYPE}
+ - C{OPEN_FAILED_RESOURCE_SHORTAGE}
+
+ The default implementation always returns
+ C{OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED}.
+
+ @param kind: the kind of channel the client would like to open
+ (usually C{"session"}).
+ @type kind: str
+ @param chanid: ID of the channel
+ @type chanid: int
+ @return: a success or failure code (listed above)
+ @rtype: int
+ """
+ return OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED
+
+ def get_allowed_auths(self, username):
+ """
+ Return a list of authentication methods supported by the server.
+ This list is sent to clients attempting to authenticate, to inform them
+ of authentication methods that might be successful.
+
+ The "list" is actually a string of comma-separated names of types of
+ authentication. Possible values are C{"password"}, C{"publickey"},
+ and C{"none"}.
+
+ The default implementation always returns C{"password"}.
+
+ @param username: the username requesting authentication.
+ @type username: str
+ @return: a comma-separated list of authentication types
+ @rtype: str
+ """
+ return 'password'
+
+ def check_auth_none(self, username):
+ """
+ Determine if a client may open channels with no (further)
+ authentication.
+
+ Return L{AUTH_FAILED} if the client must authenticate, or
+ L{AUTH_SUCCESSFUL} if it's okay for the client to not
+ authenticate.
+
+ The default implementation always returns L{AUTH_FAILED}.
+
+ @param username: the username of the client.
+ @type username: str
+ @return: L{AUTH_FAILED} if the authentication fails;
+ L{AUTH_SUCCESSFUL} if it succeeds.
+ @rtype: int
+ """
+ return AUTH_FAILED
+
+ def check_auth_password(self, username, password):
+ """
+ Determine if a given username and password supplied by the client is
+ acceptable for use in authentication.
+
+ Return L{AUTH_FAILED} if the password is not accepted,
+ L{AUTH_SUCCESSFUL} if the password is accepted and completes
+ the authentication, or L{AUTH_PARTIALLY_SUCCESSFUL} if your
+ authentication is stateful, and this key is accepted for
+ authentication, but more authentication is required. (In this latter
+ case, L{get_allowed_auths} will be called to report to the client what
+ options it has for continuing the authentication.)
+
+ The default implementation always returns L{AUTH_FAILED}.
+
+ @param username: the username of the authenticating client.
+ @type username: str
+ @param password: the password given by the client.
+ @type password: str
+ @return: L{AUTH_FAILED} if the authentication fails;
+ L{AUTH_SUCCESSFUL} if it succeeds;
+ L{AUTH_PARTIALLY_SUCCESSFUL} if the password auth is
+ successful, but authentication must continue.
+ @rtype: int
+ """
+ return AUTH_FAILED
+
+ def check_auth_publickey(self, username, key):
+ """
+ Determine if a given key supplied by the client is acceptable for use
+ in authentication. You should override this method in server mode to
+ check the username and key and decide if you would accept a signature
+ made using this key.
+
+ Return L{AUTH_FAILED} if the key is not accepted,
+ L{AUTH_SUCCESSFUL} if the key is accepted and completes the
+ authentication, or L{AUTH_PARTIALLY_SUCCESSFUL} if your
+ authentication is stateful, and this password is accepted for
+ authentication, but more authentication is required. (In this latter
+ case, L{get_allowed_auths} will be called to report to the client what
+ options it has for continuing the authentication.)
+
+ Note that you don't have to actually verify any key signtature here.
+ If you're willing to accept the key, paramiko will do the work of
+ verifying the client's signature.
+
+ The default implementation always returns L{AUTH_FAILED}.
+
+ @param username: the username of the authenticating client
+ @type username: str
+ @param key: the key object provided by the client
+ @type key: L{PKey <pkey.PKey>}
+ @return: L{AUTH_FAILED} if the client can't authenticate
+ with this key; L{AUTH_SUCCESSFUL} if it can;
+ L{AUTH_PARTIALLY_SUCCESSFUL} if it can authenticate with
+ this key but must continue with authentication
+ @rtype: int
+ """
+ return AUTH_FAILED
+
+ def check_auth_interactive(self, username, submethods):
+ """
+ Begin an interactive authentication challenge, if supported. You
+ should override this method in server mode if you want to support the
+ C{"keyboard-interactive"} auth type, which requires you to send a
+ series of questions for the client to answer.
+
+ Return L{AUTH_FAILED} if this auth method isn't supported. Otherwise,
+ you should return an L{InteractiveQuery} object containing the prompts
+ and instructions for the user. The response will be sent via a call
+ to L{check_auth_interactive_response}.
+
+ The default implementation always returns L{AUTH_FAILED}.
+
+ @param username: the username of the authenticating client
+ @type username: str
+ @param submethods: a comma-separated list of methods preferred by the
+ client (usually empty)
+ @type submethods: str
+ @return: L{AUTH_FAILED} if this auth method isn't supported; otherwise
+ an object containing queries for the user
+ @rtype: int or L{InteractiveQuery}
+ """
+ return AUTH_FAILED
+
+ def check_auth_interactive_response(self, responses):
+ """
+ Continue or finish an interactive authentication challenge, if
+ supported. You should override this method in server mode if you want
+ to support the C{"keyboard-interactive"} auth type.
+
+ Return L{AUTH_FAILED} if the responses are not accepted,
+ L{AUTH_SUCCESSFUL} if the responses are accepted and complete
+ the authentication, or L{AUTH_PARTIALLY_SUCCESSFUL} if your
+ authentication is stateful, and this set of responses is accepted for
+ authentication, but more authentication is required. (In this latter
+ case, L{get_allowed_auths} will be called to report to the client what
+ options it has for continuing the authentication.)
+
+ If you wish to continue interactive authentication with more questions,
+ you may return an L{InteractiveQuery} object, which should cause the
+ client to respond with more answers, calling this method again. This
+ cycle can continue indefinitely.
+
+ The default implementation always returns L{AUTH_FAILED}.
+
+ @param responses: list of responses from the client
+ @type responses: list(str)
+ @return: L{AUTH_FAILED} if the authentication fails;
+ L{AUTH_SUCCESSFUL} if it succeeds;
+ L{AUTH_PARTIALLY_SUCCESSFUL} if the interactive auth is
+ successful, but authentication must continue; otherwise an object
+ containing queries for the user
+ @rtype: int or L{InteractiveQuery}
+ """
+ return AUTH_FAILED
+
+ def check_global_request(self, kind, msg):
+ """
+ Handle a global request of the given C{kind}. This method is called
+ in server mode and client mode, whenever the remote host makes a global
+ request. If there are any arguments to the request, they will be in
+ C{msg}.
+
+ There aren't any useful global requests defined, aside from port
+ forwarding, so usually this type of request is an extension to the
+ protocol.
+
+ If the request was successful and you would like to return contextual
+ data to the remote host, return a tuple. Items in the tuple will be
+ sent back with the successful result. (Note that the items in the
+ tuple can only be strings, ints, longs, or bools.)
+
+ The default implementation always returns C{False}, indicating that it
+ does not support any global requests.
+
+ @param kind: the kind of global request being made.
+ @type kind: str
+ @param msg: any extra arguments to the request.
+ @type msg: L{Message}
+ @return: C{True} or a tuple of data if the request was granted;
+ C{False} otherwise.
+ @rtype: bool
+ """
+ return False
+
+
+ ### Channel requests
+
+
+ def check_channel_pty_request(self, channel, term, width, height, pixelwidth, pixelheight,
+ modes):
+ """
+ Determine if a pseudo-terminal of the given dimensions (usually
+ requested for shell access) can be provided on the given channel.
+
+ The default implementation always returns C{False}.
+
+ @param channel: the L{Channel} the pty request arrived on.
+ @type channel: L{Channel}
+ @param term: type of terminal requested (for example, C{"vt100"}).
+ @type term: str
+ @param width: width of screen in characters.
+ @type width: int
+ @param height: height of screen in characters.
+ @type height: int
+ @param pixelwidth: width of screen in pixels, if known (may be C{0} if
+ unknown).
+ @type pixelwidth: int
+ @param pixelheight: height of screen in pixels, if known (may be C{0}
+ if unknown).
+ @type pixelheight: int
+ @return: C{True} if the psuedo-terminal has been allocated; C{False}
+ otherwise.
+ @rtype: bool
+ """
+ return False
+
+ def check_channel_shell_request(self, channel):
+ """
+ Determine if a shell will be provided to the client on the given
+ channel. If this method returns C{True}, the channel should be
+ connected to the stdin/stdout of a shell (or something that acts like
+ a shell).
+
+ The default implementation always returns C{False}.
+
+ @param channel: the L{Channel} the request arrived on.
+ @type channel: L{Channel}
+ @return: C{True} if this channel is now hooked up to a shell; C{False}
+ if a shell can't or won't be provided.
+ @rtype: bool
+ """
+ return False
+
+ def check_channel_exec_request(self, channel, command):
+ """
+ Determine if a shell command will be executed for the client. If this
+ method returns C{True}, the channel should be connected to the stdin,
+ stdout, and stderr of the shell command.
+
+ The default implementation always returns C{False}.
+
+ @param channel: the L{Channel} the request arrived on.
+ @type channel: L{Channel}
+ @param command: the command to execute.
+ @type command: str
+ @return: C{True} if this channel is now hooked up to the stdin,
+ stdout, and stderr of the executing command; C{False} if the
+ command will not be executed.
+ @rtype: bool
+
+ @since: 1.1
+ """
+ return False
+
+ def check_channel_subsystem_request(self, channel, name):
+ """
+ Determine if a requested subsystem will be provided to the client on
+ the given channel. If this method returns C{True}, all future I/O
+ through this channel will be assumed to be connected to the requested
+ subsystem. An example of a subsystem is C{sftp}.
+
+ The default implementation checks for a subsystem handler assigned via
+ L{Transport.set_subsystem_handler}.
+ If one has been set, the handler is invoked and this method returns
+ C{True}. Otherwise it returns C{False}.
+
+ @note: Because the default implementation uses the L{Transport} to
+ identify valid subsystems, you probably won't need to override this
+ method.
+
+ @param channel: the L{Channel} the pty request arrived on.
+ @type channel: L{Channel}
+ @param name: name of the requested subsystem.
+ @type name: str
+ @return: C{True} if this channel is now hooked up to the requested
+ subsystem; C{False} if that subsystem can't or won't be provided.
+ @rtype: bool
+ """
+ handler_class, larg, kwarg = channel.get_transport()._get_subsystem_handler(name)
+ if handler_class is None:
+ return False
+ handler = handler_class(channel, name, self, *larg, **kwarg)
+ handler.start()
+ return True
+
+ def check_channel_window_change_request(self, channel, width, height, pixelwidth, pixelheight):
+ """
+ Determine if the pseudo-terminal on the given channel can be resized.
+ This only makes sense if a pty was previously allocated on it.
+
+ The default implementation always returns C{False}.
+
+ @param channel: the L{Channel} the pty request arrived on.
+ @type channel: L{Channel}
+ @param width: width of screen in characters.
+ @type width: int
+ @param height: height of screen in characters.
+ @type height: int
+ @param pixelwidth: width of screen in pixels, if known (may be C{0} if
+ unknown).
+ @type pixelwidth: int
+ @param pixelheight: height of screen in pixels, if known (may be C{0}
+ if unknown).
+ @type pixelheight: int
+ @return: C{True} if the terminal was resized; C{False} if not.
+ @rtype: bool
+ """
+ return False
+
+
+class SubsystemHandler (threading.Thread):
+ """
+ Handler for a subsytem in server mode. If you create a subclass of this
+ class and pass it to
+ L{Transport.set_subsystem_handler},
+ an object of this
+ class will be created for each request for this subsystem. Each new object
+ will be executed within its own new thread by calling L{start_subsystem}.
+ When that method completes, the channel is closed.
+
+ For example, if you made a subclass C{MP3Handler} and registered it as the
+ handler for subsystem C{"mp3"}, then whenever a client has successfully
+ authenticated and requests subsytem C{"mp3"}, an object of class
+ C{MP3Handler} will be created, and L{start_subsystem} will be called on
+ it from a new thread.
+
+ @since: ivysaur
+ """
+ def __init__(self, channel, name, server):
+ """
+ Create a new handler for a channel. This is used by L{ServerInterface}
+ to start up a new handler when a channel requests this subsystem. You
+ don't need to override this method, but if you do, be sure to pass the
+ C{channel} and C{name} parameters through to the original C{__init__}
+ method here.
+
+ @param channel: the channel associated with this subsystem request.
+ @type channel: L{Channel}
+ @param name: name of the requested subsystem.
+ @type name: str
+ @param server: the server object for the session that started this
+ subsystem
+ @type server: L{ServerInterface}
+ """
+ threading.Thread.__init__(self, target=self._run)
+ self.__channel = channel
+ self.__transport = channel.get_transport()
+ self.__name = name
+ self.__server = server
+
+ def get_server(self):
+ """
+ Return the L{ServerInterface} object associated with this channel and
+ subsystem.
+
+ @rtype: L{ServerInterface}
+ """
+ return self.__server
+
+ def _run(self):
+ try:
+ self.__transport._log(DEBUG, 'Starting handler for subsystem %s' % self.__name)
+ self.start_subsystem(self.__name, self.__transport, self.__channel)
+ except Exception, e:
+ self.__transport._log(ERROR, 'Exception in subsystem handler for "%s": %s' %
+ (self.__name, str(e)))
+ self.__transport._log(ERROR, util.tb_strings())
+ try:
+ self.finish_subsystem()
+ except:
+ pass
+
+ def start_subsystem(self, name, transport, channel):
+ """
+ Process an ssh subsystem in server mode. This method is called on a
+ new object (and in a new thread) for each subsystem request. It is
+ assumed that all subsystem logic will take place here, and when the
+ subsystem is finished, this method will return. After this method
+ returns, the channel is closed.
+
+ The combination of C{transport} and C{channel} are unique; this handler
+ corresponds to exactly one L{Channel} on one L{Transport}.
+
+ @note: It is the responsibility of this method to exit if the
+ underlying L{Transport} is closed. This can be done by checking
+ L{Transport.is_active} or noticing an EOF
+ on the L{Channel}. If this method loops forever without checking
+ for this case, your python interpreter may refuse to exit because
+ this thread will still be running.
+
+ @param name: name of the requested subsystem.
+ @type name: str
+ @param transport: the server-mode L{Transport}.
+ @type transport: L{Transport}
+ @param channel: the channel associated with this subsystem request.
+ @type channel: L{Channel}
+ """
+ pass
+
+ def finish_subsystem(self):
+ """
+ Perform any cleanup at the end of a subsystem. The default
+ implementation just closes the channel.
+
+ @since: 1.1
+ """
+ self.__channel.close()
diff --git a/paramiko/sftp.py b/paramiko/sftp.py
new file mode 100644
index 0000000..58d7103
--- /dev/null
+++ b/paramiko/sftp.py
@@ -0,0 +1,168 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+import socket
+import struct
+
+from paramiko.common import *
+from paramiko import util
+from paramiko.channel import Channel
+from paramiko.message import Message
+
+
+CMD_INIT, CMD_VERSION, CMD_OPEN, CMD_CLOSE, CMD_READ, CMD_WRITE, CMD_LSTAT, CMD_FSTAT, \
+ CMD_SETSTAT, CMD_FSETSTAT, CMD_OPENDIR, CMD_READDIR, CMD_REMOVE, CMD_MKDIR, \
+ CMD_RMDIR, CMD_REALPATH, CMD_STAT, CMD_RENAME, CMD_READLINK, CMD_SYMLINK \
+ = range(1, 21)
+CMD_STATUS, CMD_HANDLE, CMD_DATA, CMD_NAME, CMD_ATTRS = range(101, 106)
+CMD_EXTENDED, CMD_EXTENDED_REPLY = range(200, 202)
+
+SFTP_OK = 0
+SFTP_EOF, SFTP_NO_SUCH_FILE, SFTP_PERMISSION_DENIED, SFTP_FAILURE, SFTP_BAD_MESSAGE, \
+ SFTP_NO_CONNECTION, SFTP_CONNECTION_LOST, SFTP_OP_UNSUPPORTED = range(1, 9)
+
+SFTP_DESC = [ 'Success',
+ 'End of file',
+ 'No such file',
+ 'Permission denied',
+ 'Failure',
+ 'Bad message',
+ 'No connection',
+ 'Connection lost',
+ 'Operation unsupported' ]
+
+SFTP_FLAG_READ = 0x1
+SFTP_FLAG_WRITE = 0x2
+SFTP_FLAG_APPEND = 0x4
+SFTP_FLAG_CREATE = 0x8
+SFTP_FLAG_TRUNC = 0x10
+SFTP_FLAG_EXCL = 0x20
+
+_VERSION = 3
+
+
+# for debugging
+CMD_NAMES = {
+ CMD_INIT: 'init',
+ CMD_VERSION: 'version',
+ CMD_OPEN: 'open',
+ CMD_CLOSE: 'close',
+ CMD_READ: 'read',
+ CMD_WRITE: 'write',
+ CMD_LSTAT: 'lstat',
+ CMD_FSTAT: 'fstat',
+ CMD_SETSTAT: 'setstat',
+ CMD_FSETSTAT: 'fsetstat',
+ CMD_OPENDIR: 'opendir',
+ CMD_READDIR: 'readdir',
+ CMD_REMOVE: 'remove',
+ CMD_MKDIR: 'mkdir',
+ CMD_RMDIR: 'rmdir',
+ CMD_REALPATH: 'realpath',
+ CMD_STAT: 'stat',
+ CMD_RENAME: 'rename',
+ CMD_READLINK: 'readlink',
+ CMD_SYMLINK: 'symlink',
+ CMD_STATUS: 'status',
+ CMD_HANDLE: 'handle',
+ CMD_DATA: 'data',
+ CMD_NAME: 'name',
+ CMD_ATTRS: 'attrs',
+ CMD_EXTENDED: 'extended',
+ CMD_EXTENDED_REPLY: 'extended_reply'
+ }
+
+
+class SFTPError (Exception):
+ pass
+
+
+class BaseSFTP (object):
+ def __init__(self):
+ self.logger = util.get_logger('paramiko.sftp')
+ self.sock = None
+ self.ultra_debug = False
+
+
+ ### internals...
+
+
+ def _send_version(self):
+ self._send_packet(CMD_INIT, struct.pack('>I', _VERSION))
+ t, data = self._read_packet()
+ if t != CMD_VERSION:
+ raise SFTPError('Incompatible sftp protocol')
+ version = struct.unpack('>I', data[:4])[0]
+ # if version != _VERSION:
+ # raise SFTPError('Incompatible sftp protocol')
+ return version
+
+ def _send_server_version(self):
+ # advertise that we support "check-file"
+ extension_pairs = [ 'check-file', 'md5,sha1' ]
+ msg = Message()
+ msg.add_int(_VERSION)
+ msg.add(*extension_pairs)
+ self._send_packet(CMD_VERSION, str(msg))
+ t, data = self._read_packet()
+ if t != CMD_INIT:
+ raise SFTPError('Incompatible sftp protocol')
+ version = struct.unpack('>I', data[:4])[0]
+ return version
+
+ def _log(self, level, msg):
+ if issubclass(type(msg), list):
+ for m in msg:
+ self.logger.log(level, m)
+ else:
+ self.logger.log(level, msg)
+
+ def _write_all(self, out):
+ while len(out) > 0:
+ n = self.sock.send(out)
+ if n <= 0:
+ raise EOFError()
+ if n == len(out):
+ return
+ out = out[n:]
+ return
+
+ def _read_all(self, n):
+ out = ''
+ while n > 0:
+ x = self.sock.recv(n)
+ if len(x) == 0:
+ raise EOFError()
+ out += x
+ n -= len(x)
+ return out
+
+ def _send_packet(self, t, packet):
+ out = struct.pack('>I', len(packet) + 1) + chr(t) + packet
+ if self.ultra_debug:
+ self._log(DEBUG, util.format_binary(out, 'OUT: '))
+ self._write_all(out)
+
+ def _read_packet(self):
+ size = struct.unpack('>I', self._read_all(4))[0]
+ data = self._read_all(size)
+ if self.ultra_debug:
+ self._log(DEBUG, util.format_binary(data, 'IN: '));
+ if size > 0:
+ return ord(data[0]), data[1:]
+ return 0, ''
diff --git a/paramiko/sftp_attr.py b/paramiko/sftp_attr.py
new file mode 100644
index 0000000..eae7c99
--- /dev/null
+++ b/paramiko/sftp_attr.py
@@ -0,0 +1,208 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+import stat
+import time
+from paramiko.common import *
+from paramiko.sftp import *
+
+
+class SFTPAttributes (object):
+ """
+ Representation of the attributes of a file (or proxied file) for SFTP in
+ client or server mode. It attemps to mirror the object returned by
+ C{os.stat} as closely as possible, so it may have the following fields,
+ with the same meanings as those returned by an C{os.stat} object:
+ - st_size
+ - st_uid
+ - st_gid
+ - st_mode
+ - st_atime
+ - st_mtime
+
+ Because SFTP allows flags to have other arbitrary named attributes, these
+ are stored in a dict named C{attr}. Occasionally, the filename is also
+ stored, in C{filename}.
+ """
+
+ FLAG_SIZE = 1
+ FLAG_UIDGID = 2
+ FLAG_PERMISSIONS = 4
+ FLAG_AMTIME = 8
+ FLAG_EXTENDED = 0x80000000L
+
+ def __init__(self):
+ """
+ Create a new (empty) SFTPAttributes object. All fields will be empty.
+ """
+ self._flags = 0
+ self.attr = {}
+
+ def from_stat(cls, obj, filename=None):
+ """
+ Create an SFTPAttributes object from an existing C{stat} object (an
+ object returned by C{os.stat}).
+
+ @param obj: an object returned by C{os.stat} (or equivalent).
+ @type obj: object
+ @param filename: the filename associated with this file.
+ @type filename: str
+ @return: new L{SFTPAttributes} object with the same attribute fields.
+ @rtype: L{SFTPAttributes}
+ """
+ attr = cls()
+ attr.st_size = obj.st_size
+ attr.st_uid = obj.st_uid
+ attr.st_gid = obj.st_gid
+ attr.st_mode = obj.st_mode
+ attr.st_atime = obj.st_atime
+ attr.st_mtime = obj.st_mtime
+ if filename is not None:
+ attr.filename = filename
+ return attr
+ from_stat = classmethod(from_stat)
+
+ def __repr__(self):
+ return '<SFTPAttributes: %s>' % self._debug_str()
+
+ def __str__(self):
+ return self._debug_str()
+
+
+ ### internals...
+
+
+ def _from_msg(cls, msg, filename=None):
+ attr = cls()
+ attr._unpack(msg)
+ if filename is not None:
+ attr.filename = filename
+ return attr
+ _from_msg = classmethod(_from_msg)
+
+ def _unpack(self, msg):
+ self._flags = msg.get_int()
+ if self._flags & self.FLAG_SIZE:
+ self.st_size = msg.get_int64()
+ if self._flags & self.FLAG_UIDGID:
+ self.st_uid = msg.get_int()
+ self.st_gid = msg.get_int()
+ if self._flags & self.FLAG_PERMISSIONS:
+ self.st_mode = msg.get_int()
+ if self._flags & self.FLAG_AMTIME:
+ self.st_atime = msg.get_int()
+ self.st_mtime = msg.get_int()
+ if self._flags & self.FLAG_EXTENDED:
+ count = msg.get_int()
+ for i in range(count):
+ self.attr[msg.get_string()] = msg.get_string()
+
+ def _pack(self, msg):
+ self._flags = 0
+ if hasattr(self, 'st_size'):
+ self._flags |= self.FLAG_SIZE
+ if hasattr(self, 'st_uid') or hasattr(self, 'st_gid'):
+ self._flags |= self.FLAG_UIDGID
+ if hasattr(self, 'st_mode'):
+ self._flags |= self.FLAG_PERMISSIONS
+ if hasattr(self, 'st_atime') or hasattr(self, 'st_mtime'):
+ self._flags |= self.FLAG_AMTIME
+ if len(self.attr) > 0:
+ self._flags |= self.FLAG_EXTENDED
+ msg.add_int(self._flags)
+ if self._flags & self.FLAG_SIZE:
+ msg.add_int64(self.st_size)
+ if self._flags & self.FLAG_UIDGID:
+ msg.add_int(getattr(self, 'st_uid', 0))
+ msg.add_int(getattr(self, 'st_gid', 0))
+ if self._flags & self.FLAG_PERMISSIONS:
+ msg.add_int(self.st_mode)
+ if self._flags & self.FLAG_AMTIME:
+ msg.add_int(getattr(self, 'st_atime', 0))
+ msg.add_int(getattr(self, 'st_mtime', 0))
+ if self._flags & self.FLAG_EXTENDED:
+ msg.add_int(len(self.attr))
+ for key, val in self.attr.iteritems():
+ msg.add_string(key)
+ msg.add_string(val)
+ return
+
+ def _debug_str(self):
+ out = '[ '
+ if hasattr(self, 'st_size'):
+ out += 'size=%d ' % self.st_size
+ if hasattr(self, 'st_uid') or hasattr(self, 'st_gid'):
+ out += 'uid=%d gid=%d ' % (getattr(self, 'st_uid', 0), getattr(self, 'st_gid', 0))
+ if hasattr(self, 'st_mode'):
+ out += 'mode=' + oct(self.st_mode) + ' '
+ if hasattr(self, 'st_atime') or hasattr(self, 'st_mtime'):
+ out += 'atime=%d mtime=%d ' % (getattr(self, 'st_atime', 0),
+ getattr(self, 'st_mtime', 0))
+ for k, v in self.attr.iteritems():
+ out += '"%s"=%r ' % (str(k), v)
+ out += ']'
+ return out
+
+ def _rwx(n, suid, sticky=False):
+ if suid:
+ suid = 2
+ out = '-r'[n >> 2] + '-w'[(n >> 1) & 1]
+ if sticky:
+ out += '-xTt'[suid + (n & 1)]
+ else:
+ out += '-xSs'[suid + (n & 1)]
+ return out
+ _rwx = staticmethod(_rwx)
+
+ def __str__(self):
+ "create a unix-style long description of the file (like ls -l)"
+ if hasattr(self, 'st_mode'):
+ kind = stat.S_IFMT(self.st_mode)
+ if kind == stat.S_IFIFO:
+ ks = 'p'
+ elif kind == stat.S_IFCHR:
+ ks = 'c'
+ elif kind == stat.S_IFDIR:
+ ks = 'd'
+ elif kind == stat.S_IFBLK:
+ ks = 'b'
+ elif kind == stat.S_IFREG:
+ ks = '-'
+ elif kind == stat.S_IFLNK:
+ ks = 'l'
+ elif kind == stat.S_IFSOCK:
+ ks = 's'
+ else:
+ ks = '?'
+ ks += self._rwx((self.st_mode & 0700) >> 6, self.st_mode & stat.S_ISUID)
+ ks += self._rwx((self.st_mode & 070) >> 3, self.st_mode & stat.S_ISGID)
+ ks += self._rwx(self.st_mode & 7, self.st_mode & stat.S_ISVTX, True)
+ else:
+ ks = '?---------'
+ uid = getattr(self, 'st_uid', -1)
+ gid = getattr(self, 'st_gid', -1)
+ size = getattr(self, 'st_size', -1)
+ mtime = getattr(self, 'st_mtime', 0)
+ # compute display date
+ if abs(time.time() - mtime) > 15552000:
+ # (15552000 = 6 months)
+ datestr = time.strftime('%d %b %Y', time.localtime(mtime))
+ else:
+ datestr = time.strftime('%d %b %H:%M', time.localtime(mtime))
+ filename = getattr(self, 'filename', '?')
+ return '%s 1 %-8d %-8d %8d %-12s %s' % (ks, uid, gid, size, datestr, filename)
diff --git a/paramiko/sftp_client.py b/paramiko/sftp_client.py
new file mode 100644
index 0000000..2fe89e9
--- /dev/null
+++ b/paramiko/sftp_client.py
@@ -0,0 +1,618 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Client-mode SFTP support.
+"""
+
+import errno
+import os
+import threading
+import weakref
+from paramiko.sftp import *
+from paramiko.sftp_attr import SFTPAttributes
+from paramiko.sftp_file import SFTPFile
+
+
+def _to_unicode(s):
+ "if a str is not ascii, decode its utf8 into unicode"
+ try:
+ return s.encode('ascii')
+ except:
+ return s.decode('utf-8')
+
+
+class SFTPClient (BaseSFTP):
+ """
+ SFTP client object. C{SFTPClient} is used to open an sftp session across
+ an open ssh L{Transport} and do remote file operations.
+ """
+
+ def __init__(self, sock):
+ """
+ Create an SFTP client from an existing L{Channel}. The channel
+ should already have requested the C{"sftp"} subsystem.
+
+ An alternate way to create an SFTP client context is by using
+ L{from_transport}.
+
+ @param sock: an open L{Channel} using the C{"sftp"} subsystem.
+ @type sock: L{Channel}
+ """
+ BaseSFTP.__init__(self)
+ self.sock = sock
+ self.ultra_debug = False
+ self.request_number = 1
+ # lock for request_number
+ self._lock = threading.Lock()
+ self._cwd = None
+ # request # -> SFTPFile
+ self._expecting = weakref.WeakValueDictionary()
+ if type(sock) is Channel:
+ # override default logger
+ transport = self.sock.get_transport()
+ self.logger = util.get_logger(transport.get_log_channel() + '.' +
+ self.sock.get_name() + '.sftp')
+ self.ultra_debug = transport.get_hexdump()
+ self._send_version()
+
+ def __del__(self):
+ self.close()
+
+ def from_transport(selfclass, t):
+ """
+ Create an SFTP client channel from an open L{Transport}.
+
+ @param t: an open L{Transport} which is already authenticated.
+ @type t: L{Transport}
+ @return: a new L{SFTPClient} object, referring to an sftp session
+ (channel) across the transport.
+ @rtype: L{SFTPClient}
+ """
+ chan = t.open_session()
+ if chan is None:
+ return None
+ if not chan.invoke_subsystem('sftp'):
+ raise SFTPError('Failed to invoke sftp subsystem')
+ return selfclass(chan)
+ from_transport = classmethod(from_transport)
+
+ def close(self):
+ """
+ Close the SFTP session and its underlying channel.
+
+ @since: 1.4
+ """
+ self.sock.close()
+
+ def listdir(self, path='.'):
+ """
+ Return a list containing the names of the entries in the given C{path}.
+ The list is in arbitrary order. It does not include the special
+ entries C{'.'} and C{'..'} even if they are present in the folder.
+ This method is meant to mirror C{os.listdir} as closely as possible.
+ For a list of full L{SFTPAttributes} objects, see L{listdir_attr}.
+
+ @param path: path to list (defaults to C{'.'})
+ @type path: str
+ @return: list of filenames
+ @rtype: list of str
+ """
+ return [f.filename for f in self.listdir_attr(path)]
+
+ def listdir_attr(self, path='.'):
+ """
+ Return a list containing L{SFTPAttributes} objects corresponding to
+ files in the given C{path}. The list is in arbitrary order. It does
+ not include the special entries C{'.'} and C{'..'} even if they are
+ present in the folder.
+
+ @param path: path to list (defaults to C{'.'})
+ @type path: str
+ @return: list of attributes
+ @rtype: list of L{SFTPAttributes}
+
+ @since: 1.2
+ """
+ path = self._adjust_cwd(path)
+ t, msg = self._request(CMD_OPENDIR, path)
+ if t != CMD_HANDLE:
+ raise SFTPError('Expected handle')
+ handle = msg.get_string()
+ filelist = []
+ while True:
+ try:
+ t, msg = self._request(CMD_READDIR, handle)
+ except EOFError, e:
+ # done with handle
+ break
+ if t != CMD_NAME:
+ raise SFTPError('Expected name response')
+ count = msg.get_int()
+ for i in range(count):
+ filename = _to_unicode(msg.get_string())
+ longname = _to_unicode(msg.get_string())
+ attr = SFTPAttributes._from_msg(msg, filename)
+ if (filename != '.') and (filename != '..'):
+ filelist.append(attr)
+ self._request(CMD_CLOSE, handle)
+ return filelist
+
+ def file(self, filename, mode='r', bufsize=-1):
+ """
+ Open a file on the remote server. The arguments are the same as for
+ python's built-in C{file} (aka C{open}). A file-like object is
+ returned, which closely mimics the behavior of a normal python file
+ object.
+
+ The mode indicates how the file is to be opened: C{'r'} for reading,
+ C{'w'} for writing (truncating an existing file), C{'a'} for appending,
+ C{'r+'} for reading/writing, C{'w+'} for reading/writing (truncating an
+ existing file), C{'a+'} for reading/appending. The python C{'b'} flag
+ is ignored, since SSH treats all files as binary. The C{'U'} flag is
+ supported in a compatible way.
+
+ Since 1.5.2, an C{'x'} flag indicates that the operation should only
+ succeed if the file was created and did not previously exist. This has
+ no direct mapping to python's file flags, but is commonly known as the
+ C{O_EXCL} flag in posix.
+
+ The file will be buffered in standard python style by default, but
+ can be altered with the C{bufsize} parameter. C{0} turns off
+ buffering, C{1} uses line buffering, and any number greater than 1
+ (C{>1}) uses that specific buffer size.
+
+ @param filename: name of the file to open.
+ @type filename: string
+ @param mode: mode (python-style) to open in.
+ @type mode: string
+ @param bufsize: desired buffering (-1 = default buffer size)
+ @type bufsize: int
+ @return: a file object representing the open file.
+ @rtype: SFTPFile
+
+ @raise IOError: if the file could not be opened.
+ """
+ filename = self._adjust_cwd(filename)
+ imode = 0
+ if ('r' in mode) or ('+' in mode):
+ imode |= SFTP_FLAG_READ
+ if ('w' in mode) or ('+' in mode) or ('a' in mode):
+ imode |= SFTP_FLAG_WRITE
+ if ('w' in mode):
+ imode |= SFTP_FLAG_CREATE | SFTP_FLAG_TRUNC
+ if ('a' in mode):
+ imode |= SFTP_FLAG_CREATE | SFTP_FLAG_APPEND
+ if ('x' in mode):
+ imode |= SFTP_FLAG_CREATE | SFTP_FLAG_EXCL
+ attrblock = SFTPAttributes()
+ t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
+ if t != CMD_HANDLE:
+ raise SFTPError('Expected handle')
+ handle = msg.get_string()
+ return SFTPFile(self, handle, mode, bufsize)
+
+ # python has migrated toward file() instead of open().
+ # and really, that's more easily identifiable.
+ open = file
+
+ def remove(self, path):
+ """
+ Remove the file at the given path.
+
+ @param path: path (absolute or relative) of the file to remove.
+ @type path: string
+
+ @raise IOError: if the path refers to a folder (directory). Use
+ L{rmdir} to remove a folder.
+ """
+ path = self._adjust_cwd(path)
+ self._request(CMD_REMOVE, path)
+
+ unlink = remove
+
+ def rename(self, oldpath, newpath):
+ """
+ Rename a file or folder from C{oldpath} to C{newpath}.
+
+ @param oldpath: existing name of the file or folder.
+ @type oldpath: string
+ @param newpath: new name for the file or folder.
+ @type newpath: string
+
+ @raise IOError: if C{newpath} is a folder, or something else goes
+ wrong.
+ """
+ oldpath = self._adjust_cwd(oldpath)
+ newpath = self._adjust_cwd(newpath)
+ self._request(CMD_RENAME, oldpath, newpath)
+
+ def mkdir(self, path, mode=0777):
+ """
+ Create a folder (directory) named C{path} with numeric mode C{mode}.
+ The default mode is 0777 (octal). On some systems, mode is ignored.
+ Where it is used, the current umask value is first masked out.
+
+ @param path: name of the folder to create.
+ @type path: string
+ @param mode: permissions (posix-style) for the newly-created folder.
+ @type mode: int
+ """
+ path = self._adjust_cwd(path)
+ attr = SFTPAttributes()
+ attr.st_mode = mode
+ self._request(CMD_MKDIR, path, attr)
+
+ def rmdir(self, path):
+ """
+ Remove the folder named C{path}.
+
+ @param path: name of the folder to remove.
+ @type path: string
+ """
+ path = self._adjust_cwd(path)
+ self._request(CMD_RMDIR, path)
+
+ def stat(self, path):
+ """
+ Retrieve information about a file on the remote system. The return
+ value is an object whose attributes correspond to the attributes of
+ python's C{stat} structure as returned by C{os.stat}, except that it
+ contains fewer fields. An SFTP server may return as much or as little
+ info as it wants, so the results may vary from server to server.
+
+ Unlike a python C{stat} object, the result may not be accessed as a
+ tuple. This is mostly due to the author's slack factor.
+
+ The fields supported are: C{st_mode}, C{st_size}, C{st_uid}, C{st_gid},
+ C{st_atime}, and C{st_mtime}.
+
+ @param path: the filename to stat.
+ @type path: string
+ @return: an object containing attributes about the given file.
+ @rtype: SFTPAttributes
+ """
+ path = self._adjust_cwd(path)
+ t, msg = self._request(CMD_STAT, path)
+ if t != CMD_ATTRS:
+ raise SFTPError('Expected attributes')
+ return SFTPAttributes._from_msg(msg)
+
+ def lstat(self, path):
+ """
+ Retrieve information about a file on the remote system, without
+ following symbolic links (shortcuts). This otherwise behaves exactly
+ the same as L{stat}.
+
+ @param path: the filename to stat.
+ @type path: string
+ @return: an object containing attributes about the given file.
+ @rtype: SFTPAttributes
+ """
+ path = self._adjust_cwd(path)
+ t, msg = self._request(CMD_LSTAT, path)
+ if t != CMD_ATTRS:
+ raise SFTPError('Expected attributes')
+ return SFTPAttributes._from_msg(msg)
+
+ def symlink(self, source, dest):
+ """
+ Create a symbolic link (shortcut) of the C{source} path at
+ C{destination}.
+
+ @param source: path of the original file.
+ @type source: string
+ @param dest: path of the newly created symlink.
+ @type dest: string
+ """
+ dest = self._adjust_cwd(dest)
+ if type(source) is unicode:
+ source = source.encode('utf-8')
+ self._request(CMD_SYMLINK, source, dest)
+
+ def chmod(self, path, mode):
+ """
+ Change the mode (permissions) of a file. The permissions are
+ unix-style and identical to those used by python's C{os.chmod}
+ function.
+
+ @param path: path of the file to change the permissions of.
+ @type path: string
+ @param mode: new permissions.
+ @type mode: int
+ """
+ path = self._adjust_cwd(path)
+ attr = SFTPAttributes()
+ attr.st_mode = mode
+ self._request(CMD_SETSTAT, path, attr)
+
+ def chown(self, path, uid, gid):
+ """
+ Change the owner (C{uid}) and group (C{gid}) of a file. As with
+ python's C{os.chown} function, you must pass both arguments, so if you
+ only want to change one, use L{stat} first to retrieve the current
+ owner and group.
+
+ @param path: path of the file to change the owner and group of.
+ @type path: string
+ @param uid: new owner's uid
+ @type uid: int
+ @param gid: new group id
+ @type gid: int
+ """
+ path = self._adjust_cwd(path)
+ attr = SFTPAttributes()
+ attr.st_uid, attr.st_gid = uid, gid
+ self._request(CMD_SETSTAT, path, attr)
+
+ def utime(self, path, times):
+ """
+ Set the access and modified times of the file specified by C{path}. If
+ C{times} is C{None}, then the file's access and modified times are set
+ to the current time. Otherwise, C{times} must be a 2-tuple of numbers,
+ of the form C{(atime, mtime)}, which is used to set the access and
+ modified times, respectively. This bizarre API is mimicked from python
+ for the sake of consistency -- I apologize.
+
+ @param path: path of the file to modify.
+ @type path: string
+ @param times: C{None} or a tuple of (access time, modified time) in
+ standard internet epoch time (seconds since 01 January 1970 GMT).
+ @type times: tuple of int
+ """
+ path = self._adjust_cwd(path)
+ if times is None:
+ times = (time.time(), time.time())
+ attr = SFTPAttributes()
+ attr.st_atime, attr.st_mtime = times
+ self._request(CMD_SETSTAT, path, attr)
+
+ def readlink(self, path):
+ """
+ Return the target of a symbolic link (shortcut). You can use
+ L{symlink} to create these. The result may be either an absolute or
+ relative pathname.
+
+ @param path: path of the symbolic link file.
+ @type path: str
+ @return: target path.
+ @rtype: str
+ """
+ path = self._adjust_cwd(path)
+ t, msg = self._request(CMD_READLINK, path)
+ if t != CMD_NAME:
+ raise SFTPError('Expected name response')
+ count = msg.get_int()
+ if count == 0:
+ return None
+ if count != 1:
+ raise SFTPError('Readlink returned %d results' % count)
+ return _to_unicode(msg.get_string())
+
+ def normalize(self, path):
+ """
+ Return the normalized path (on the server) of a given path. This
+ can be used to quickly resolve symbolic links or determine what the
+ server is considering to be the "current folder" (by passing C{'.'}
+ as C{path}).
+
+ @param path: path to be normalized.
+ @type path: str
+ @return: normalized form of the given path.
+ @rtype: str
+
+ @raise IOError: if the path can't be resolved on the server
+ """
+ path = self._adjust_cwd(path)
+ t, msg = self._request(CMD_REALPATH, path)
+ if t != CMD_NAME:
+ raise SFTPError('Expected name response')
+ count = msg.get_int()
+ if count != 1:
+ raise SFTPError('Realpath returned %d results' % count)
+ return _to_unicode(msg.get_string())
+
+ def chdir(self, path):
+ """
+ Change the "current directory" of this SFTP session. Since SFTP
+ doesn't really have the concept of a current working directory, this
+ is emulated by paramiko. Once you use this method to set a working
+ directory, all operations on this SFTPClient object will be relative
+ to that path.
+
+ @param path: new current working directory
+ @type path: str
+
+ @raise IOError: if the requested path doesn't exist on the server
+
+ @since: 1.4
+ """
+ self._cwd = self.normalize(path)
+
+ def getcwd(self):
+ """
+ Return the "current working directory" for this SFTP session, as
+ emulated by paramiko. If no directory has been set with L{chdir},
+ this method will return C{None}.
+
+ @return: the current working directory on the server, or C{None}
+ @rtype: str
+
+ @since: 1.4
+ """
+ return self._cwd
+
+ def put(self, localpath, remotepath):
+ """
+ Copy a local file (C{localpath}) to the SFTP server as C{remotepath}.
+ Any exception raised by operations will be passed through. This
+ method is primarily provided as a convenience.
+
+ The SFTP operations use pipelining for speed.
+
+ @param localpath: the local file to copy
+ @type localpath: str
+ @param remotepath: the destination path on the SFTP server
+ @type remotepath: str
+
+ @since: 1.4
+ """
+ fl = file(localpath, 'rb')
+ fr = self.file(remotepath, 'wb')
+ fr.set_pipelined(True)
+ size = 0
+ while True:
+ data = fl.read(32768)
+ if len(data) == 0:
+ break
+ fr.write(data)
+ size += len(data)
+ fl.close()
+ fr.close()
+ s = self.stat(remotepath)
+ if s.st_size != size:
+ raise IOError('size mismatch in put! %d != %d' % (s.st_size, size))
+
+ def get(self, remotepath, localpath):
+ """
+ Copy a remote file (C{remotepath}) from the SFTP server to the local
+ host as C{localpath}. Any exception raised by operations will be
+ passed through. This method is primarily provided as a convenience.
+
+ @param remotepath: the remote file to copy
+ @type remotepath: str
+ @param localpath: the destination path on the local host
+ @type localpath: str
+
+ @since: 1.4
+ """
+ fr = self.file(remotepath, 'rb')
+ fr.prefetch()
+ fl = file(localpath, 'wb')
+ size = 0
+ while True:
+ data = fr.read(32768)
+ if len(data) == 0:
+ break
+ fl.write(data)
+ size += len(data)
+ fl.close()
+ fr.close()
+ s = os.stat(localpath)
+ if s.st_size != size:
+ raise IOError('size mismatch in get! %d != %d' % (s.st_size, size))
+
+
+ ### internals...
+
+
+ def _request(self, t, *arg):
+ num = self._async_request(type(None), t, *arg)
+ return self._read_response(num)
+
+ def _async_request(self, fileobj, t, *arg):
+ # this method may be called from other threads (prefetch)
+ self._lock.acquire()
+ try:
+ msg = Message()
+ msg.add_int(self.request_number)
+ for item in arg:
+ if type(item) is int:
+ msg.add_int(item)
+ elif type(item) is long:
+ msg.add_int64(item)
+ elif type(item) is str:
+ msg.add_string(item)
+ elif type(item) is SFTPAttributes:
+ item._pack(msg)
+ else:
+ raise Exception('unknown type for %r type %r' % (item, type(item)))
+ num = self.request_number
+ self._expecting[num] = fileobj
+ self._send_packet(t, str(msg))
+ self.request_number += 1
+ finally:
+ self._lock.release()
+ return num
+
+ def _read_response(self, waitfor=None):
+ while True:
+ t, data = self._read_packet()
+ msg = Message(data)
+ num = msg.get_int()
+ if num not in self._expecting:
+ # might be response for a file that was closed before responses came back
+ self._log(DEBUG, 'Unexpected response #%d' % (num,))
+ if waitfor is None:
+ # just doing a single check
+ return
+ continue
+ fileobj = self._expecting[num]
+ del self._expecting[num]
+ if num == waitfor:
+ # synchronous
+ if t == CMD_STATUS:
+ self._convert_status(msg)
+ return t, msg
+ if fileobj is not type(None):
+ fileobj._async_response(t, msg)
+ if waitfor is None:
+ # just doing a single check
+ return
+
+ def _finish_responses(self, fileobj):
+ while fileobj in self._expecting.values():
+ self._read_response()
+ fileobj._check_exception()
+
+ def _convert_status(self, msg):
+ """
+ Raises EOFError or IOError on error status; otherwise does nothing.
+ """
+ code = msg.get_int()
+ text = msg.get_string()
+ if code == SFTP_OK:
+ return
+ elif code == SFTP_EOF:
+ raise EOFError(text)
+ elif code == SFTP_NO_SUCH_FILE:
+ # clever idea from john a. meinel: map the error codes to errno
+ raise IOError(errno.ENOENT, text)
+ elif code == SFTP_PERMISSION_DENIED:
+ raise IOError(errno.EACCES, text)
+ else:
+ raise IOError(text)
+
+ def _adjust_cwd(self, path):
+ """
+ Return an adjusted path if we're emulating a "current working
+ directory" for the server.
+ """
+ if type(path) is unicode:
+ path = path.encode('utf-8')
+ if self._cwd is None:
+ return path
+ if (len(path) > 0) and (path[0] == '/'):
+ # absolute path
+ return path
+ return self._cwd + '/' + path
+
+
+class SFTP (SFTPClient):
+ "an alias for L{SFTPClient} for backwards compatability"
+ pass
diff --git a/paramiko/sftp_file.py b/paramiko/sftp_file.py
new file mode 100644
index 0000000..f224f02
--- /dev/null
+++ b/paramiko/sftp_file.py
@@ -0,0 +1,307 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+L{SFTPFile}
+"""
+
+import threading
+from paramiko.common import *
+from paramiko.sftp import *
+from paramiko.file import BufferedFile
+from paramiko.sftp_attr import SFTPAttributes
+
+
+class SFTPFile (BufferedFile):
+ """
+ Proxy object for a file on the remote server, in client mode SFTP.
+ """
+
+ # Some sftp servers will choke if you send read/write requests larger than
+ # this size.
+ MAX_REQUEST_SIZE = 32768
+
+ def __init__(self, sftp, handle, mode='r', bufsize=-1):
+ BufferedFile.__init__(self)
+ self.sftp = sftp
+ self.handle = handle
+ BufferedFile._set_mode(self, mode, bufsize)
+ self.pipelined = False
+ self._prefetching = False
+ self._saved_exception = None
+
+ def __del__(self):
+ self.close(_async=True)
+
+ def close(self, _async=False):
+ # We allow double-close without signaling an error, because real
+ # Python file objects do. However, we must protect against actually
+ # sending multiple CMD_CLOSE packets, because after we close our
+ # handle, the same handle may be re-allocated by the server, and we
+ # may end up mysteriously closing some random other file. (This is
+ # especially important because we unconditionally call close() from
+ # __del__.)
+ if self._closed:
+ return
+ if self.pipelined:
+ self.sftp._finish_responses(self)
+ BufferedFile.close(self)
+ try:
+ if _async:
+ # GC'd file handle could be called from an arbitrary thread -- don't wait for a response
+ self.sftp._async_request(type(None), CMD_CLOSE, self.handle)
+ else:
+ self.sftp._request(CMD_CLOSE, self.handle)
+ except EOFError:
+ # may have outlived the Transport connection
+ pass
+ except IOError:
+ # may have outlived the Transport connection
+ pass
+
+ def _read_prefetch(self, size):
+ # while not closed, and haven't fetched past the current position, and haven't reached EOF...
+ while (self._prefetch_so_far <= self._realpos) and \
+ (self._prefetch_so_far < self._prefetch_size) and not self._closed:
+ self.sftp._read_response()
+ self._check_exception()
+ k = self._prefetch_data.keys()
+ k.sort()
+ while (len(k) > 0) and (k[0] + len(self._prefetch_data[k[0]]) <= self._realpos):
+ # done with that block
+ del self._prefetch_data[k[0]]
+ k.pop(0)
+ if len(k) == 0:
+ self._prefetching = False
+ return ''
+ assert k[0] <= self._realpos
+ buf_offset = self._realpos - k[0]
+ buf_length = len(self._prefetch_data[k[0]]) - buf_offset
+ return self._prefetch_data[k[0]][buf_offset : buf_offset + buf_length]
+
+ def _read(self, size):
+ size = min(size, self.MAX_REQUEST_SIZE)
+ if self._prefetching:
+ return self._read_prefetch(size)
+ t, msg = self.sftp._request(CMD_READ, self.handle, long(self._realpos), int(size))
+ if t != CMD_DATA:
+ raise SFTPError('Expected data')
+ return msg.get_string()
+
+ def _write(self, data):
+ # may write less than requested if it would exceed max packet size
+ chunk = min(len(data), self.MAX_REQUEST_SIZE)
+ req = self.sftp._async_request(type(None), CMD_WRITE, self.handle, long(self._realpos),
+ str(data[:chunk]))
+ if not self.pipelined or self.sftp.sock.recv_ready():
+ t, msg = self.sftp._read_response(req)
+ if t != CMD_STATUS:
+ raise SFTPError('Expected status')
+ # convert_status already called
+ return chunk
+
+ def settimeout(self, timeout):
+ """
+ Set a timeout on read/write operations on the underlying socket or
+ ssh L{Channel}.
+
+ @see: L{Channel.settimeout}
+ @param timeout: seconds to wait for a pending read/write operation
+ before raising C{socket.timeout}, or C{None} for no timeout
+ @type timeout: float
+ """
+ self.sftp.sock.settimeout(timeout)
+
+ def gettimeout(self):
+ """
+ Returns the timeout in seconds (as a float) associated with the socket
+ or ssh L{Channel} used for this file.
+
+ @see: L{Channel.gettimeout}
+ @rtype: float
+ """
+ return self.sftp.sock.gettimeout()
+
+ def setblocking(self, blocking):
+ """
+ Set blocking or non-blocking mode on the underiying socket or ssh
+ L{Channel}.
+
+ @see: L{Channel.setblocking}
+ @param blocking: 0 to set non-blocking mode; non-0 to set blocking
+ mode.
+ @type blocking: int
+ """
+ self.sftp.sock.setblocking(blocking)
+
+ def seek(self, offset, whence=0):
+ self.flush()
+ if whence == self.SEEK_SET:
+ self._realpos = self._pos = offset
+ elif whence == self.SEEK_CUR:
+ self._pos += offset
+ self._realpos = self._pos
+ else:
+ self._realpos = self._pos = self._get_size() + offset
+ self._rbuffer = ''
+
+ def stat(self):
+ """
+ Retrieve information about this file from the remote system. This is
+ exactly like L{SFTP.stat}, except that it operates on an already-open
+ file.
+
+ @return: an object containing attributes about this file.
+ @rtype: SFTPAttributes
+ """
+ t, msg = self.sftp._request(CMD_FSTAT, self.handle)
+ if t != CMD_ATTRS:
+ raise SFTPError('Expected attributes')
+ return SFTPAttributes._from_msg(msg)
+
+ def check(self, hash_algorithm, offset=0, length=0, block_size=0):
+ """
+ Ask the server for a hash of a section of this file. This can be used
+ to verify a successful upload or download, or for various rsync-like
+ operations.
+
+ The file is hashed from C{offset}, for C{length} bytes. If C{length}
+ is 0, the remainder of the file is hashed. Thus, if both C{offset}
+ and C{length} are zero, the entire file is hashed.
+
+ Normally, C{block_size} will be 0 (the default), and this method will
+ return a byte string representing the requested hash (for example, a
+ string of length 16 for MD5, or 20 for SHA-1). If a non-zero
+ C{block_size} is given, each chunk of the file (from C{offset} to
+ C{offset + length}) of C{block_size} bytes is computed as a separate
+ hash. The hash results are all concatenated and returned as a single
+ string.
+
+ For example, C{check('sha1', 0, 1024, 512)} will return a string of
+ length 40. The first 20 bytes will be the SHA-1 of the first 512 bytes
+ of the file, and the last 20 bytes will be the SHA-1 of the next 512
+ bytes.
+
+ @param hash_algorithm: the name of the hash algorithm to use (normally
+ C{"sha1"} or C{"md5"})
+ @type hash_algorithm: str
+ @param offset: offset into the file to begin hashing (0 means to start
+ from the beginning)
+ @type offset: int or long
+ @param length: number of bytes to hash (0 means continue to the end of
+ the file)
+ @type length: int or long
+ @param block_size: number of bytes to hash per result (must not be less
+ than 256; 0 means to compute only one hash of the entire segment)
+ @type block_size: int
+ @return: string of bytes representing the hash of each block,
+ concatenated together
+ @rtype: str
+
+ @note: Many (most?) servers don't support this extension yet.
+
+ @raise IOError: if the server doesn't support the "check-file"
+ extension, or possibly doesn't support the hash algorithm
+ requested
+
+ @since: 1.4
+ """
+ t, msg = self.sftp._request(CMD_EXTENDED, 'check-file', self.handle,
+ hash_algorithm, long(offset), long(length), block_size)
+ ext = msg.get_string()
+ alg = msg.get_string()
+ data = msg.get_remainder()
+ return data
+
+ def set_pipelined(self, pipelined=True):
+ """
+ Turn on/off the pipelining of write operations to this file. When
+ pipelining is on, paramiko won't wait for the server response after
+ each write operation. Instead, they're collected as they come in.
+ At the first non-write operation (including L{close}), all remaining
+ server responses are collected. This means that if there was an error
+ with one of your later writes, an exception might be thrown from
+ within L{close} instead of L{write}.
+
+ By default, files are I{not} pipelined.
+
+ @param pipelined: C{True} if pipelining should be turned on for this
+ file; C{False} otherwise
+ @type pipelined: bool
+
+ @since: 1.5
+ """
+ self.pipelined = pipelined
+
+ def prefetch(self):
+ """
+ Pre-fetch the remaining contents of this file in anticipation of
+ future L{read} calls. If reading the entire file, pre-fetching can
+ dramatically improve the download speed by avoiding roundtrip latency.
+ The file's contents are incrementally buffered in a background thread.
+
+ @since: 1.5.1
+ """
+ size = self.stat().st_size
+ # queue up async reads for the rest of the file
+ self._prefetching = True
+ self._prefetch_so_far = self._realpos
+ self._prefetch_size = size
+ self._prefetch_data = {}
+ t = threading.Thread(target=self._prefetch)
+ t.setDaemon(True)
+ t.start()
+
+ def _prefetch(self):
+ n = self._realpos
+ size = self._prefetch_size
+ while n < size:
+ chunk = min(self.MAX_REQUEST_SIZE, size - n)
+ self.sftp._async_request(self, CMD_READ, self.handle, long(n), int(chunk))
+ n += chunk
+
+
+ ### internals...
+
+
+ def _get_size(self):
+ try:
+ return self.stat().st_size
+ except:
+ return 0
+
+ def _async_response(self, t, msg):
+ if t == CMD_STATUS:
+ # save exception and re-raise it on next file operation
+ try:
+ self.sftp._convert_status(msg)
+ except Exception, x:
+ self._saved_exception = x
+ return
+ if t != CMD_DATA:
+ raise SFTPError('Expected data')
+ data = msg.get_string()
+ self._prefetch_data[self._prefetch_so_far] = data
+ self._prefetch_so_far += len(data)
+
+ def _check_exception(self):
+ "if there's a saved exception, raise & clear it"
+ if self._saved_exception is not None:
+ x = self._saved_exception
+ self._saved_exception = None
+ raise x
diff --git a/paramiko/sftp_handle.py b/paramiko/sftp_handle.py
new file mode 100644
index 0000000..e1d93e9
--- /dev/null
+++ b/paramiko/sftp_handle.py
@@ -0,0 +1,188 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Abstraction of an SFTP file handle (for server mode).
+"""
+
+import os
+
+from paramiko.common import *
+from paramiko.sftp import *
+
+
+class SFTPHandle (object):
+ """
+ Abstract object representing a handle to an open file (or folder) in an
+ SFTP server implementation. Each handle has a string representation used
+ by the client to refer to the underlying file.
+
+ Server implementations can (and should) subclass SFTPHandle to implement
+ features of a file handle, like L{stat} or L{chattr}.
+ """
+ def __init__(self):
+ self.__name = None
+ # only for handles to folders:
+ self.__files = { }
+ self.__tell = None
+
+ def close(self):
+ """
+ When a client closes a file, this method is called on the handle.
+ Normally you would use this method to close the underlying OS level
+ file object(s).
+
+ The default implementation checks for attributes on C{self} named
+ C{readfile} and/or C{writefile}, and if either or both are present,
+ their C{close()} methods are called. This means that if you are
+ using the default implementations of L{read} and L{write}, this
+ method's default implementation should be fine also.
+ """
+ readfile = getattr(self, 'readfile', None)
+ if readfile is not None:
+ readfile.close()
+ writefile = getattr(self, 'writefile', None)
+ if writefile is not None:
+ writefile.close()
+
+ def read(self, offset, length):
+ """
+ Read up to C{length} bytes from this file, starting at position
+ C{offset}. The offset may be a python long, since SFTP allows it
+ to be 64 bits.
+
+ If the end of the file has been reached, this method may return an
+ empty string to signify EOF, or it may also return L{SFTP_EOF}.
+
+ The default implementation checks for an attribute on C{self} named
+ C{readfile}, and if present, performs the read operation on the python
+ file-like object found there. (This is meant as a time saver for the
+ common case where you are wrapping a python file object.)
+
+ @param offset: position in the file to start reading from.
+ @type offset: int or long
+ @param length: number of bytes to attempt to read.
+ @type length: int
+ @return: data read from the file, or an SFTP error code.
+ @rtype: str
+ """
+ if not hasattr(self, 'readfile') or (self.readfile is None):
+ return SFTP_OP_UNSUPPORTED
+ try:
+ if self.__tell is None:
+ self.__tell = self.readfile.tell()
+ if offset != self.__tell:
+ self.readfile.seek(offset)
+ self.__tell = offset
+ data = self.readfile.read(length)
+ except IOError, e:
+ self.__tell = None
+ return SFTPServer.convert_errno(e.errno)
+ self.__tell += len(data)
+ return data
+
+ def write(self, offset, data):
+ """
+ Write C{data} into this file at position C{offset}. Extending the
+ file past its original end is expected. Unlike python's normal
+ C{write()} methods, this method cannot do a partial write: it must
+ write all of C{data} or else return an error.
+
+ The default implementation checks for an attribute on C{self} named
+ C{writefile}, and if present, performs the write operation on the
+ python file-like object found there. The attribute is named
+ differently from C{readfile} to make it easy to implement read-only
+ (or write-only) files, but if both attributes are present, they should
+ refer to the same file.
+
+ @param offset: position in the file to start reading from.
+ @type offset: int or long
+ @param data: data to write into the file.
+ @type data: str
+ @return: an SFTP error code like L{SFTP_OK}.
+ """
+ if not hasattr(self, 'writefile') or (self.writefile is None):
+ return SFTP_OP_UNSUPPORTED
+ try:
+ if self.__tell is None:
+ self.__tell = self.writefile.tell()
+ if offset != self.__tell:
+ self.writefile.seek(offset)
+ self.__tell = offset
+ self.writefile.write(data)
+ self.writefile.flush()
+ except IOError, e:
+ self.__tell = None
+ return SFTPServer.convert_errno(e.errno)
+ self.__tell += len(data)
+ return SFTP_OK
+
+ def stat(self):
+ """
+ Return an L{SFTPAttributes} object referring to this open file, or an
+ error code. This is equivalent to L{SFTPServerInterface.stat}, except
+ it's called on an open file instead of a path.
+
+ @return: an attributes object for the given file, or an SFTP error
+ code (like L{SFTP_PERMISSION_DENIED}).
+ @rtype: L{SFTPAttributes} I{or error code}
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def chattr(self, attr):
+ """
+ Change the attributes of this file. The C{attr} object will contain
+ only those fields provided by the client in its request, so you should
+ check for the presence of fields before using them.
+
+ @param attr: the attributes to change on this file.
+ @type attr: L{SFTPAttributes}
+ @return: an error code like L{SFTP_OK}.
+ @rtype: int
+ """
+ return SFTP_OP_UNSUPPORTED
+
+
+ ### internals...
+
+
+ def _set_files(self, files):
+ """
+ Used by the SFTP server code to cache a directory listing. (In
+ the SFTP protocol, listing a directory is a multi-stage process
+ requiring a temporary handle.)
+ """
+ self.__files = files
+
+ def _get_next_files(self):
+ """
+ Used by the SFTP server code to retreive a cached directory
+ listing.
+ """
+ fnlist = self.__files[:16]
+ self.__files = self.__files[16:]
+ return fnlist
+
+ def _get_name(self):
+ return self.__name
+
+ def _set_name(self, name):
+ self.__name = name
+
+
+from paramiko.sftp_server import SFTPServer
diff --git a/paramiko/sftp_server.py b/paramiko/sftp_server.py
new file mode 100644
index 0000000..5905843
--- /dev/null
+++ b/paramiko/sftp_server.py
@@ -0,0 +1,420 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Server-mode SFTP support.
+"""
+
+import os
+import errno
+
+from Crypto.Hash import MD5, SHA
+from paramiko.common import *
+from paramiko.server import SubsystemHandler
+from paramiko.sftp import *
+from paramiko.sftp_si import *
+from paramiko.sftp_attr import *
+
+
+# known hash algorithms for the "check-file" extension
+_hash_class = {
+ 'sha1': SHA,
+ 'md5': MD5,
+}
+
+
+class SFTPServer (BaseSFTP, SubsystemHandler):
+ """
+ Server-side SFTP subsystem support. Since this is a L{SubsystemHandler},
+ it can be (and is meant to be) set as the handler for C{"sftp"} requests.
+ Use L{Transport.set_subsystem_handler} to activate this class.
+ """
+
+ def __init__(self, channel, name, server, sftp_si=SFTPServerInterface, *largs, **kwargs):
+ """
+ The constructor for SFTPServer is meant to be called from within the
+ L{Transport} as a subsystem handler. C{server} and any additional
+ parameters or keyword parameters are passed from the original call to
+ L{Transport.set_subsystem_handler}.
+
+ @param channel: channel passed from the L{Transport}.
+ @type channel: L{Channel}
+ @param name: name of the requested subsystem.
+ @type name: str
+ @param server: the server object associated with this channel and
+ subsystem
+ @type server: L{ServerInterface}
+ @param sftp_si: a subclass of L{SFTPServerInterface} to use for handling
+ individual requests.
+ @type sftp_si: class
+ """
+ BaseSFTP.__init__(self)
+ SubsystemHandler.__init__(self, channel, name, server)
+ transport = channel.get_transport()
+ self.logger = util.get_logger(transport.get_log_channel() + '.' +
+ channel.get_name() + '.sftp')
+ self.ultra_debug = transport.get_hexdump()
+ self.next_handle = 1
+ # map of handle-string to SFTPHandle for files & folders:
+ self.file_table = { }
+ self.folder_table = { }
+ self.server = sftp_si(server, *largs, **kwargs)
+
+ def start_subsystem(self, name, transport, channel):
+ self.sock = channel
+ self._log(DEBUG, 'Started sftp server on channel %s' % repr(channel))
+ self._send_server_version()
+ self.server.session_started()
+ while True:
+ try:
+ t, data = self._read_packet()
+ except EOFError:
+ self._log(DEBUG, 'EOF -- end of session')
+ return
+ except Exception, e:
+ self._log(DEBUG, 'Exception on channel: ' + str(e))
+ self._log(DEBUG, util.tb_strings())
+ return
+ msg = Message(data)
+ request_number = msg.get_int()
+ self._process(t, request_number, msg)
+
+ def finish_subsystem(self):
+ self.server.session_ended()
+ # close any file handles that were left open (so we can return them to the OS quickly)
+ for f in self.file_table.itervalues():
+ f.close()
+ for f in self.folder_table.itervalues():
+ f.close()
+ self.file_table = {}
+ self.folder_table = {}
+
+ def convert_errno(e):
+ """
+ Convert an errno value (as from an C{OSError} or C{IOError}) into a
+ standard SFTP result code. This is a convenience function for trapping
+ exceptions in server code and returning an appropriate result.
+
+ @param e: an errno code, as from C{OSError.errno}.
+ @type e: int
+ @return: an SFTP error code like L{SFTP_NO_SUCH_FILE}.
+ @rtype: int
+ """
+ if e == errno.EACCES:
+ # permission denied
+ return SFTP_PERMISSION_DENIED
+ elif e == errno.ENOENT:
+ # no such file
+ return SFTP_NO_SUCH_FILE
+ else:
+ return SFTP_FAILURE
+ convert_errno = staticmethod(convert_errno)
+
+ def set_file_attr(filename, attr):
+ """
+ Change a file's attributes on the local filesystem. The contents of
+ C{attr} are used to change the permissions, owner, group ownership,
+ and/or modification & access time of the file, depending on which
+ attributes are present in C{attr}.
+
+ This is meant to be a handy helper function for translating SFTP file
+ requests into local file operations.
+
+ @param filename: name of the file to alter (should usually be an
+ absolute path).
+ @type filename: str
+ @param attr: attributes to change.
+ @type attr: L{SFTPAttributes}
+ """
+ if attr._flags & attr.FLAG_PERMISSIONS:
+ os.chmod(filename, attr.st_mode)
+ if attr._flags & attr.FLAG_UIDGID:
+ os.chown(filename, attr.st_uid, attr.st_gid)
+ if attr._flags & attr.FLAG_AMTIME:
+ os.utime(filename, (attr.st_atime, attr.st_mtime))
+ set_file_attr = staticmethod(set_file_attr)
+
+
+ ### internals...
+
+
+ def _response(self, request_number, t, *arg):
+ msg = Message()
+ msg.add_int(request_number)
+ for item in arg:
+ if type(item) is int:
+ msg.add_int(item)
+ elif type(item) is long:
+ msg.add_int64(item)
+ elif type(item) is str:
+ msg.add_string(item)
+ elif type(item) is SFTPAttributes:
+ item._pack(msg)
+ else:
+ raise Exception('unknown type for ' + repr(item) + ' type ' + repr(type(item)))
+ self._send_packet(t, str(msg))
+
+ def _send_handle_response(self, request_number, handle, folder=False):
+ if not issubclass(type(handle), SFTPHandle):
+ # must be error code
+ self._send_status(request_number, handle)
+ return
+ handle._set_name('hx%d' % self.next_handle)
+ self.next_handle += 1
+ if folder:
+ self.folder_table[handle._get_name()] = handle
+ else:
+ self.file_table[handle._get_name()] = handle
+ self._response(request_number, CMD_HANDLE, handle._get_name())
+
+ def _send_status(self, request_number, code, desc=None):
+ if desc is None:
+ desc = SFTP_DESC[code]
+ self._response(request_number, CMD_STATUS, code, desc)
+
+ def _open_folder(self, request_number, path):
+ resp = self.server.list_folder(path)
+ if issubclass(type(resp), list):
+ # got an actual list of filenames in the folder
+ folder = SFTPHandle()
+ folder._set_files(resp)
+ self._send_handle_response(request_number, folder, True)
+ return
+ # must be an error code
+ self._send_status(request_number, resp)
+
+ def _read_folder(self, request_number, folder):
+ flist = folder._get_next_files()
+ if len(flist) == 0:
+ self._send_status(request_number, SFTP_EOF)
+ return
+ msg = Message()
+ msg.add_int(request_number)
+ msg.add_int(len(flist))
+ for attr in flist:
+ msg.add_string(attr.filename)
+ msg.add_string(str(attr))
+ attr._pack(msg)
+ self._send_packet(CMD_NAME, str(msg))
+
+ def _check_file(self, request_number, msg):
+ # this extension actually comes from v6 protocol, but since it's an
+ # extension, i feel like we can reasonably support it backported.
+ # it's very useful for verifying uploaded files or checking for
+ # rsync-like differences between local and remote files.
+ handle = msg.get_string()
+ alg_list = msg.get_list()
+ start = msg.get_int64()
+ length = msg.get_int64()
+ block_size = msg.get_int()
+ if not self.file_table.has_key(handle):
+ self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle')
+ return
+ f = self.file_table[handle]
+ for x in alg_list:
+ if x in _hash_class:
+ algname = x
+ alg = _hash_class[x]
+ break
+ else:
+ self._send_status(request_number, SFTP_FAILURE, 'No supported hash types found')
+ return
+ if length == 0:
+ st = f.stat()
+ if not issubclass(type(st), SFTPAttributes):
+ self._send_status(request_number, st, 'Unable to stat file')
+ return
+ length = st.st_size - start
+ if block_size == 0:
+ block_size = length
+ if block_size < 256:
+ self._send_status(request_number, SFTP_FAILURE, 'Block size too small')
+ return
+
+ sum = ''
+ offset = start
+ while offset < start + length:
+ blocklen = min(block_size, start + length - offset)
+ # don't try to read more than about 64KB at a time
+ chunklen = min(blocklen, 65536)
+ count = 0
+ hash = alg.new()
+ while count < blocklen:
+ data = f.read(offset, chunklen)
+ if not type(data) is str:
+ self._send_status(request_number, data, 'Unable to hash file')
+ return
+ hash.update(data)
+ count += len(data)
+ offset += count
+ sum += hash.digest()
+
+ msg = Message()
+ msg.add_int(request_number)
+ msg.add_string('check-file')
+ msg.add_string(algname)
+ msg.add_bytes(sum)
+ self._send_packet(CMD_EXTENDED_REPLY, str(msg))
+
+ def _convert_pflags(self, pflags):
+ "convert SFTP-style open() flags to python's os.open() flags"
+ if (pflags & SFTP_FLAG_READ) and (pflags & SFTP_FLAG_WRITE):
+ flags = os.O_RDWR
+ elif pflags & SFTP_FLAG_WRITE:
+ flags = os.O_WRONLY
+ else:
+ flags = os.O_RDONLY
+ if pflags & SFTP_FLAG_APPEND:
+ flags |= os.O_APPEND
+ if pflags & SFTP_FLAG_CREATE:
+ flags |= os.O_CREAT
+ if pflags & SFTP_FLAG_TRUNC:
+ flags |= os.O_TRUNC
+ if pflags & SFTP_FLAG_EXCL:
+ flags |= os.O_EXCL
+ return flags
+
+ def _process(self, t, request_number, msg):
+ self._log(DEBUG, 'Request: %s' % CMD_NAMES[t])
+ if t == CMD_OPEN:
+ path = msg.get_string()
+ flags = self._convert_pflags(msg.get_int())
+ attr = SFTPAttributes._from_msg(msg)
+ self._send_handle_response(request_number, self.server.open(path, flags, attr))
+ elif t == CMD_CLOSE:
+ handle = msg.get_string()
+ if self.folder_table.has_key(handle):
+ del self.folder_table[handle]
+ self._send_status(request_number, SFTP_OK)
+ return
+ if self.file_table.has_key(handle):
+ self.file_table[handle].close()
+ del self.file_table[handle]
+ self._send_status(request_number, SFTP_OK)
+ return
+ self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle')
+ elif t == CMD_READ:
+ handle = msg.get_string()
+ offset = msg.get_int64()
+ length = msg.get_int()
+ if not self.file_table.has_key(handle):
+ self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle')
+ return
+ data = self.file_table[handle].read(offset, length)
+ if type(data) is str:
+ if len(data) == 0:
+ self._send_status(request_number, SFTP_EOF)
+ else:
+ self._response(request_number, CMD_DATA, data)
+ else:
+ self._send_status(request_number, data)
+ elif t == CMD_WRITE:
+ handle = msg.get_string()
+ offset = msg.get_int64()
+ data = msg.get_string()
+ if not self.file_table.has_key(handle):
+ self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle')
+ return
+ self._send_status(request_number, self.file_table[handle].write(offset, data))
+ elif t == CMD_REMOVE:
+ path = msg.get_string()
+ self._send_status(request_number, self.server.remove(path))
+ elif t == CMD_RENAME:
+ oldpath = msg.get_string()
+ newpath = msg.get_string()
+ self._send_status(request_number, self.server.rename(oldpath, newpath))
+ elif t == CMD_MKDIR:
+ path = msg.get_string()
+ attr = SFTPAttributes._from_msg(msg)
+ self._send_status(request_number, self.server.mkdir(path, attr))
+ elif t == CMD_RMDIR:
+ path = msg.get_string()
+ self._send_status(request_number, self.server.rmdir(path))
+ elif t == CMD_OPENDIR:
+ path = msg.get_string()
+ self._open_folder(request_number, path)
+ return
+ elif t == CMD_READDIR:
+ handle = msg.get_string()
+ if not self.folder_table.has_key(handle):
+ self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle')
+ return
+ folder = self.folder_table[handle]
+ self._read_folder(request_number, folder)
+ elif t == CMD_STAT:
+ path = msg.get_string()
+ resp = self.server.stat(path)
+ if issubclass(type(resp), SFTPAttributes):
+ self._response(request_number, CMD_ATTRS, resp)
+ else:
+ self._send_status(request_number, resp)
+ elif t == CMD_LSTAT:
+ path = msg.get_string()
+ resp = self.server.lstat(path)
+ if issubclass(type(resp), SFTPAttributes):
+ self._response(request_number, CMD_ATTRS, resp)
+ else:
+ self._send_status(request_number, resp)
+ elif t == CMD_FSTAT:
+ handle = msg.get_string()
+ if not self.file_table.has_key(handle):
+ self._send_status(request_number, SFTP_BAD_MESSAGE, 'Invalid handle')
+ return
+ resp = self.file_table[handle].stat()
+ if issubclass(type(resp), SFTPAttributes):
+ self._response(request_number, CMD_ATTRS, resp)
+ else:
+ self._send_status(request_number, resp)
+ elif t == CMD_SETSTAT:
+ path = msg.get_string()
+ attr = SFTPAttributes._from_msg(msg)
+ self._send_status(request_number, self.server.chattr(path, attr))
+ elif t == CMD_FSETSTAT:
+ handle = msg.get_string()
+ attr = SFTPAttributes._from_msg(msg)
+ if not self.file_table.has_key(handle):
+ self._response(request_number, SFTP_BAD_MESSAGE, 'Invalid handle')
+ return
+ self._send_status(request_number, self.file_table[handle].chattr(attr))
+ elif t == CMD_READLINK:
+ path = msg.get_string()
+ resp = self.server.readlink(path)
+ if type(resp) is str:
+ self._response(request_number, CMD_NAME, 1, resp, '', SFTPAttributes())
+ else:
+ self._send_status(request_number, resp)
+ elif t == CMD_SYMLINK:
+ # the sftp 2 draft is incorrect here! path always follows target_path
+ target_path = msg.get_string()
+ path = msg.get_string()
+ self._send_status(request_number, self.server.symlink(target_path, path))
+ elif t == CMD_REALPATH:
+ path = msg.get_string()
+ rpath = self.server.canonicalize(path)
+ self._response(request_number, CMD_NAME, 1, rpath, '', SFTPAttributes())
+ elif t == CMD_EXTENDED:
+ tag = msg.get_string()
+ if tag == 'check-file':
+ self._check_file(request_number, msg)
+ else:
+ send._send_status(request_number, SFTP_OP_UNSUPPORTED)
+ else:
+ self._send_status(request_number, SFTP_OP_UNSUPPORTED)
+
+
+from paramiko.sftp_handle import SFTPHandle
diff --git a/paramiko/sftp_si.py b/paramiko/sftp_si.py
new file mode 100644
index 0000000..16005d4
--- /dev/null
+++ b/paramiko/sftp_si.py
@@ -0,0 +1,303 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+L{SFTPServerInterface} is an interface to override for SFTP server support.
+"""
+
+import os
+
+from paramiko.common import *
+from paramiko.sftp import *
+
+
+class SFTPServerInterface (object):
+ """
+ This class defines an interface for controlling the behavior of paramiko
+ when using the L{SFTPServer} subsystem to provide an SFTP server.
+
+ Methods on this class are called from the SFTP session's thread, so you can
+ block as long as necessary without affecting other sessions (even other
+ SFTP sessions). However, raising an exception will usually cause the SFTP
+ session to abruptly end, so you will usually want to catch exceptions and
+ return an appropriate error code.
+ """
+
+ def __init__ (self, server, *largs, **kwargs):
+ """
+ Create a new SFTPServerInterface object. This method does nothing by
+ default and is meant to be overridden by subclasses.
+
+ @param server: the server object associated with this channel and
+ SFTP subsystem
+ @type server: L{ServerInterface}
+ """
+ super(SFTPServerInterface, self).__init__(*largs, **kwargs)
+
+ def session_started(self):
+ """
+ The SFTP server session has just started. This method is meant to be
+ overridden to perform any necessary setup before handling callbacks
+ from SFTP operations.
+ """
+ pass
+
+ def session_ended(self):
+ """
+ The SFTP server session has just ended, either cleanly or via an
+ exception. This method is meant to be overridden to perform any
+ necessary cleanup before this C{SFTPServerInterface} object is
+ destroyed.
+ """
+ pass
+
+ def open(self, path, flags, attr):
+ """
+ Open a file on the server and create a handle for future operations
+ on that file. On success, a new object subclassed from L{SFTPHandle}
+ should be returned. This handle will be used for future operations
+ on the file (read, write, etc). On failure, an error code such as
+ L{SFTP_PERMISSION_DENIED} should be returned.
+
+ C{flags} contains the requested mode for opening (read-only,
+ write-append, etc) as a bitset of flags from the C{os} module:
+ - C{os.O_RDONLY}
+ - C{os.O_WRONLY}
+ - C{os.O_RDWR}
+ - C{os.O_APPEND}
+ - C{os.O_CREAT}
+ - C{os.O_TRUNC}
+ - C{os.O_EXCL}
+ (One of C{os.O_RDONLY}, C{os.O_WRONLY}, or C{os.O_RDWR} will always
+ be set.)
+
+ The C{attr} object contains requested attributes of the file if it
+ has to be created. Some or all attribute fields may be missing if
+ the client didn't specify them.
+
+ @note: The SFTP protocol defines all files to be in "binary" mode.
+ There is no equivalent to python's "text" mode.
+
+ @param path: the requested path (relative or absolute) of the file
+ to be opened.
+ @type path: str
+ @param flags: flags or'd together from the C{os} module indicating the
+ requested mode for opening the file.
+ @type flags: int
+ @param attr: requested attributes of the file if it is newly created.
+ @type attr: L{SFTPAttributes}
+ @return: a new L{SFTPHandle} I{or error code}.
+ @rtype L{SFTPHandle}
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def list_folder(self, path):
+ """
+ Return a list of files within a given folder. The C{path} will use
+ posix notation (C{"/"} separates folder names) and may be an absolute
+ or relative path.
+
+ The list of files is expected to be a list of L{SFTPAttributes}
+ objects, which are similar in structure to the objects returned by
+ C{os.stat}. In addition, each object should have its C{filename}
+ field filled in, since this is important to a directory listing and
+ not normally present in C{os.stat} results. The method
+ L{SFTPAttributes.from_stat} will usually do what you want.
+
+ In case of an error, you should return one of the C{SFTP_*} error
+ codes, such as L{SFTP_PERMISSION_DENIED}.
+
+ @param path: the requested path (relative or absolute) to be listed.
+ @type path: str
+ @return: a list of the files in the given folder, using
+ L{SFTPAttributes} objects.
+ @rtype: list of L{SFTPAttributes} I{or error code}
+
+ @note: You should normalize the given C{path} first (see the
+ C{os.path} module) and check appropriate permissions before returning
+ the list of files. Be careful of malicious clients attempting to use
+ relative paths to escape restricted folders, if you're doing a direct
+ translation from the SFTP server path to your local filesystem.
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def stat(self, path):
+ """
+ Return an L{SFTPAttributes} object for a path on the server, or an
+ error code. If your server supports symbolic links (also known as
+ "aliases"), you should follow them. (L{lstat} is the corresponding
+ call that doesn't follow symlinks/aliases.)
+
+ @param path: the requested path (relative or absolute) to fetch
+ file statistics for.
+ @type path: str
+ @return: an attributes object for the given file, or an SFTP error
+ code (like L{SFTP_PERMISSION_DENIED}).
+ @rtype: L{SFTPAttributes} I{or error code}
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def lstat(self, path):
+ """
+ Return an L{SFTPAttributes} object for a path on the server, or an
+ error code. If your server supports symbolic links (also known as
+ "aliases"), you should I{not} follow them -- instead, you should
+ return data on the symlink or alias itself. (L{stat} is the
+ corresponding call that follows symlinks/aliases.)
+
+ @param path: the requested path (relative or absolute) to fetch
+ file statistics for.
+ @type path: str
+ @return: an attributes object for the given file, or an SFTP error
+ code (like L{SFTP_PERMISSION_DENIED}).
+ @rtype: L{SFTPAttributes} I{or error code}
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def remove(self, path):
+ """
+ Delete a file, if possible.
+
+ @param path: the requested path (relative or absolute) of the file
+ to delete.
+ @type path: str
+ @return: an SFTP error code like L{SFTP_OK}.
+ @rtype: int
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def rename(self, oldpath, newpath):
+ """
+ Rename (or move) a file. The SFTP specification implies that this
+ method can be used to move an existing file into a different folder,
+ and since there's no other (easy) way to move files via SFTP, it's
+ probably a good idea to implement "move" in this method too, even for
+ files that cross disk partition boundaries, if at all possible.
+
+ @note: You should return an error if a file with the same name as
+ C{newpath} already exists. (The rename operation should be
+ non-desctructive.)
+
+ @param oldpath: the requested path (relative or absolute) of the
+ existing file.
+ @type oldpath: str
+ @param newpath: the requested new path of the file.
+ @type newpath: str
+ @return: an SFTP error code like L{SFTP_OK}.
+ @rtype: int
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def mkdir(self, path, attr):
+ """
+ Create a new directory with the given attributes. The C{attr}
+ object may be considered a "hint" and ignored.
+
+ The C{attr} object will contain only those fields provided by the
+ client in its request, so you should use C{hasattr} to check for
+ the presense of fields before using them. In some cases, the C{attr}
+ object may be completely empty.
+
+ @param path: requested path (relative or absolute) of the new
+ folder.
+ @type path: str
+ @param attr: requested attributes of the new folder.
+ @type attr: L{SFTPAttributes}
+ @return: an SFTP error code like L{SFTP_OK}.
+ @rtype: int
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def rmdir(self, path):
+ """
+ Remove a directory if it exists. The C{path} should refer to an
+ existing, empty folder -- otherwise this method should return an
+ error.
+
+ @param path: requested path (relative or absolute) of the folder
+ to remove.
+ @type path: str
+ @return: an SFTP error code like L{SFTP_OK}.
+ @rtype: int
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def chattr(self, path, attr):
+ """
+ Change the attributes of a file. The C{attr} object will contain
+ only those fields provided by the client in its request, so you
+ should check for the presence of fields before using them.
+
+ @param path: requested path (relative or absolute) of the file to
+ change.
+ @type path: str
+ @param attr: requested attributes to change on the file.
+ @type attr: L{SFTPAttributes}
+ @return: an error code like L{SFTP_OK}.
+ @rtype: int
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def canonicalize(self, path):
+ """
+ Return the canonical form of a path on the server. For example,
+ if the server's home folder is C{/home/foo}, the path
+ C{"../betty"} would be canonicalized to C{"/home/betty"}. Note
+ the obvious security issues: if you're serving files only from a
+ specific folder, you probably don't want this method to reveal path
+ names outside that folder.
+
+ You may find the python methods in C{os.path} useful, especially
+ C{os.path.normpath} and C{os.path.realpath}.
+
+ The default implementation returns C{os.path.normpath('/' + path)}.
+ """
+ if os.path.isabs(path):
+ return os.path.normpath(path)
+ else:
+ return os.path.normpath('/' + path)
+
+ def readlink(self, path):
+ """
+ Return the target of a symbolic link (or shortcut) on the server.
+ If the specified path doesn't refer to a symbolic link, an error
+ should be returned.
+
+ @param path: path (relative or absolute) of the symbolic link.
+ @type path: str
+ @return: the target path of the symbolic link, or an error code like
+ L{SFTP_NO_SUCH_FILE}.
+ @rtype: str I{or error code}
+ """
+ return SFTP_OP_UNSUPPORTED
+
+ def symlink(self, target_path, path):
+ """
+ Create a symbolic link on the server, as new pathname C{path},
+ with C{target_path} as the target of the link.
+
+ @param target_path: path (relative or absolute) of the target for
+ this new symbolic link.
+ @type target_path: str
+ @param path: path (relative or absolute) of the symbolic link to
+ create.
+ @type path: str
+ @return: an error code like C{SFTP_OK}.
+ @rtype: int
+ """
+ return SFTP_OP_UNSUPPORTED
diff --git a/paramiko/ssh_exception.py b/paramiko/ssh_exception.py
new file mode 100644
index 0000000..900d4a0
--- /dev/null
+++ b/paramiko/ssh_exception.py
@@ -0,0 +1,69 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Exceptions defined by paramiko.
+"""
+
+
+class SSHException (Exception):
+ """
+ Exception raised by failures in SSH2 protocol negotiation or logic errors.
+ """
+ pass
+
+
+class PasswordRequiredException (SSHException):
+ """
+ Exception raised when a password is needed to unlock a private key file.
+ """
+ pass
+
+
+class BadAuthenticationType (SSHException):
+ """
+ Exception raised when an authentication type (like password) is used, but
+ the server isn't allowing that type. (It may only allow public-key, for
+ example.)
+
+ @ivar allowed_types: list of allowed authentication types provided by the
+ server (possible values are: C{"none"}, C{"password"}, and
+ C{"publickey"}).
+ @type allowed_types: list
+
+ @since: 1.1
+ """
+ allowed_types = []
+
+ def __init__(self, explanation, types):
+ SSHException.__init__(self, explanation)
+ self.allowed_types = types
+
+ def __str__(self):
+ return SSHException.__str__(self) + ' (allowed_types=%r)' % self.allowed_types
+
+
+class PartialAuthentication (SSHException):
+ """
+ An internal exception thrown in the case of partial authentication.
+ """
+ allowed_types = []
+
+ def __init__(self, types):
+ SSHException.__init__(self, 'partial authentication')
+ self.allowed_types = types
diff --git a/paramiko/transport.py b/paramiko/transport.py
new file mode 100644
index 0000000..8714a96
--- /dev/null
+++ b/paramiko/transport.py
@@ -0,0 +1,1824 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+L{Transport} handles the core SSH2 protocol.
+"""
+
+import os
+import socket
+import string
+import struct
+import sys
+import threading
+import time
+import weakref
+
+from paramiko import util
+from paramiko.common import *
+from paramiko.compress import ZlibCompressor, ZlibDecompressor
+from paramiko.ssh_exception import SSHException, BadAuthenticationType
+from paramiko.message import Message
+from paramiko.channel import Channel
+from paramiko.sftp_client import SFTPClient
+from paramiko.packet import Packetizer, NeedRekeyException
+from paramiko.rsakey import RSAKey
+from paramiko.dsskey import DSSKey
+from paramiko.kex_group1 import KexGroup1
+from paramiko.kex_gex import KexGex
+from paramiko.primes import ModulusPack
+from paramiko.auth_handler import AuthHandler
+
+# these come from PyCrypt
+# http://www.amk.ca/python/writing/pycrypt/
+# i believe this on the standards track.
+# PyCrypt compiled for Win32 can be downloaded from the HashTar homepage:
+# http://nitace.bsd.uchicago.edu:8080/hashtar
+from Crypto.Cipher import Blowfish, AES, DES3
+from Crypto.Hash import SHA, MD5, HMAC
+
+
+# for thread cleanup
+_active_threads = []
+def _join_lingering_threads():
+ for thr in _active_threads:
+ thr.stop_thread()
+import atexit
+atexit.register(_join_lingering_threads)
+
+
+class SecurityOptions (object):
+ """
+ Simple object containing the security preferences of an ssh transport.
+ These are tuples of acceptable ciphers, digests, key types, and key
+ exchange algorithms, listed in order of preference.
+
+ Changing the contents and/or order of these fields affects the underlying
+ L{Transport} (but only if you change them before starting the session).
+ If you try to add an algorithm that paramiko doesn't recognize,
+ C{ValueError} will be raised. If you try to assign something besides a
+ tuple to one of the fields, C{TypeError} will be raised.
+
+ @since: ivysaur
+ """
+ __slots__ = [ 'ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport' ]
+
+ def __init__(self, transport):
+ self._transport = transport
+
+ def __repr__(self):
+ """
+ Returns a string representation of this object, for debugging.
+
+ @rtype: str
+ """
+ return '<paramiko.SecurityOptions for %s>' % repr(self._transport)
+
+ def _get_ciphers(self):
+ return self._transport._preferred_ciphers
+
+ def _get_digests(self):
+ return self._transport._preferred_macs
+
+ def _get_key_types(self):
+ return self._transport._preferred_keys
+
+ def _get_kex(self):
+ return self._transport._preferred_kex
+
+ def _get_compression(self):
+ return self._transport._preferred_compression
+
+ def _set(self, name, orig, x):
+ if type(x) is list:
+ x = tuple(x)
+ if type(x) is not tuple:
+ raise TypeError('expected tuple or list')
+ possible = getattr(self._transport, orig).keys()
+ if len(filter(lambda n: n not in possible, x)) > 0:
+ raise ValueError('unknown cipher')
+ setattr(self._transport, name, x)
+
+ def _set_ciphers(self, x):
+ self._set('_preferred_ciphers', '_cipher_info', x)
+
+ def _set_digests(self, x):
+ self._set('_preferred_macs', '_mac_info', x)
+
+ def _set_key_types(self, x):
+ self._set('_preferred_keys', '_key_info', x)
+
+ def _set_kex(self, x):
+ self._set('_preferred_kex', '_kex_info', x)
+
+ def _set_compression(self, x):
+ self._set('_preferred_compression', '_compression_info', x)
+
+ ciphers = property(_get_ciphers, _set_ciphers, None,
+ "Symmetric encryption ciphers")
+ digests = property(_get_digests, _set_digests, None,
+ "Digest (one-way hash) algorithms")
+ key_types = property(_get_key_types, _set_key_types, None,
+ "Public-key algorithms")
+ kex = property(_get_kex, _set_kex, None, "Key exchange algorithms")
+ compression = property(_get_compression, _set_compression, None,
+ "Compression algorithms")
+
+
+class Transport (threading.Thread):
+ """
+ An SSH Transport attaches to a stream (usually a socket), negotiates an
+ encrypted session, authenticates, and then creates stream tunnels, called
+ L{Channel}s, across the session. Multiple channels can be multiplexed
+ across a single session (and often are, in the case of port forwardings).
+ """
+
+ _PROTO_ID = '2.0'
+ _CLIENT_ID = 'paramiko_1.5.2'
+
+ _preferred_ciphers = ( 'aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc' )
+ _preferred_macs = ( 'hmac-sha1', 'hmac-md5', 'hmac-sha1-96', 'hmac-md5-96' )
+ _preferred_keys = ( 'ssh-rsa', 'ssh-dss' )
+ _preferred_kex = ( 'diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1' )
+ _preferred_compression = ( 'none', )
+
+ _cipher_info = {
+ 'blowfish-cbc': { 'class': Blowfish, 'mode': Blowfish.MODE_CBC, 'block-size': 8, 'key-size': 16 },
+ 'aes128-cbc': { 'class': AES, 'mode': AES.MODE_CBC, 'block-size': 16, 'key-size': 16 },
+ 'aes256-cbc': { 'class': AES, 'mode': AES.MODE_CBC, 'block-size': 16, 'key-size': 32 },
+ '3des-cbc': { 'class': DES3, 'mode': DES3.MODE_CBC, 'block-size': 8, 'key-size': 24 },
+ }
+
+ _mac_info = {
+ 'hmac-sha1': { 'class': SHA, 'size': 20 },
+ 'hmac-sha1-96': { 'class': SHA, 'size': 12 },
+ 'hmac-md5': { 'class': MD5, 'size': 16 },
+ 'hmac-md5-96': { 'class': MD5, 'size': 12 },
+ }
+
+ _key_info = {
+ 'ssh-rsa': RSAKey,
+ 'ssh-dss': DSSKey,
+ }
+
+ _kex_info = {
+ 'diffie-hellman-group1-sha1': KexGroup1,
+ 'diffie-hellman-group-exchange-sha1': KexGex,
+ }
+
+ _compression_info = {
+ # zlib@openssh.com is just zlib, but only turned on after a successful
+ # authentication. openssh servers may only offer this type because
+ # they've had troubles with security holes in zlib in the past.
+ 'zlib@openssh.com': ( ZlibCompressor, ZlibDecompressor ),
+ 'zlib': ( ZlibCompressor, ZlibDecompressor ),
+ 'none': ( None, None ),
+ }
+
+
+ _modulus_pack = None
+
+ def __init__(self, sock):
+ """
+ Create a new SSH session over an existing socket, or socket-like
+ object. This only creates the Transport object; it doesn't begin the
+ SSH session yet. Use L{connect} or L{start_client} to begin a client
+ session, or L{start_server} to begin a server session.
+
+ If the object is not actually a socket, it must have the following
+ methods:
+ - C{send(str)}: Writes from 1 to C{len(str)} bytes, and
+ returns an int representing the number of bytes written. Returns
+ 0 or raises C{EOFError} if the stream has been closed.
+ - C{recv(int)}: Reads from 1 to C{int} bytes and returns them as a
+ string. Returns 0 or raises C{EOFError} if the stream has been
+ closed.
+ - C{close()}: Closes the socket.
+ - C{settimeout(n)}: Sets a (float) timeout on I/O operations.
+
+ For ease of use, you may also pass in an address (as a tuple) or a host
+ string as the C{sock} argument. (A host string is a hostname with an
+ optional port (separated by C{":"}) which will be converted into a
+ tuple of C{(hostname, port)}.) A socket will be connected to this
+ address and used for communication. Exceptions from the C{socket} call
+ may be thrown in this case.
+
+ @param sock: a socket or socket-like object to create the session over.
+ @type sock: socket
+ """
+ if type(sock) is str:
+ # convert "host:port" into (host, port)
+ hl = sock.split(':', 1)
+ if len(hl) == 1:
+ sock = (hl[0], 22)
+ else:
+ sock = (hl[0], int(hl[1]))
+ if type(sock) is tuple:
+ # connect to the given (host, port)
+ hostname, port = sock
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.connect((hostname, port))
+ # okay, normal socket-ish flow here...
+ threading.Thread.__init__(self)
+ self.randpool = randpool
+ self.sock = sock
+ # Python < 2.3 doesn't have the settimeout method - RogerB
+ try:
+ # we set the timeout so we can check self.active periodically to
+ # see if we should bail. socket.timeout exception is never
+ # propagated.
+ self.sock.settimeout(0.1)
+ except AttributeError:
+ pass
+ # negotiated crypto parameters
+ self.packetizer = Packetizer(sock)
+ self.local_version = 'SSH-' + self._PROTO_ID + '-' + self._CLIENT_ID
+ self.remote_version = ''
+ self.local_cipher = self.remote_cipher = ''
+ self.local_kex_init = self.remote_kex_init = None
+ self.session_id = None
+ # /negotiated crypto parameters
+ self.expected_packet = 0
+ self.active = False
+ self.initial_kex_done = False
+ self.in_kex = False
+ self.lock = threading.Lock() # synchronization (always higher level than write_lock)
+ self.channels = weakref.WeakValueDictionary() # (id -> Channel)
+ self.channel_events = { } # (id -> Event)
+ self.channels_seen = { } # (id -> True)
+ self.channel_counter = 1
+ self.window_size = 65536
+ self.max_packet_size = 34816
+ self.saved_exception = None
+ self.clear_to_send = threading.Event()
+ self.clear_to_send_lock = threading.Lock()
+ self.log_name = 'paramiko.transport'
+ self.logger = util.get_logger(self.log_name)
+ self.packetizer.set_log(self.logger)
+ self.auth_handler = None
+ self.authenticated = False
+ # user-defined event callbacks:
+ self.completion_event = None
+ # server mode:
+ self.server_mode = False
+ self.server_object = None
+ self.server_key_dict = { }
+ self.server_accepts = [ ]
+ self.server_accept_cv = threading.Condition(self.lock)
+ self.subsystem_table = { }
+
+ def __del__(self):
+ self.close()
+
+ def __repr__(self):
+ """
+ Returns a string representation of this object, for debugging.
+
+ @rtype: str
+ """
+ out = '<paramiko.Transport at %s' % hex(long(id(self)) & 0xffffffffL)
+ if not self.active:
+ out += ' (unconnected)'
+ else:
+ if self.local_cipher != '':
+ out += ' (cipher %s, %d bits)' % (self.local_cipher,
+ self._cipher_info[self.local_cipher]['key-size'] * 8)
+ if self.is_authenticated():
+ if len(self.channels) == 1:
+ out += ' (active; 1 open channel)'
+ else:
+ out += ' (active; %d open channels)' % len(self.channels)
+ elif self.initial_kex_done:
+ out += ' (connected; awaiting auth)'
+ else:
+ out += ' (connecting)'
+ out += '>'
+ return out
+
+ def get_security_options(self):
+ """
+ Return a L{SecurityOptions} object which can be used to tweak the
+ encryption algorithms this transport will permit, and the order of
+ preference for them.
+
+ @return: an object that can be used to change the preferred algorithms
+ for encryption, digest (hash), public key, and key exchange.
+ @rtype: L{SecurityOptions}
+
+ @since: ivysaur
+ """
+ return SecurityOptions(self)
+
+ def start_client(self, event=None):
+ """
+ Negotiate a new SSH2 session as a client. This is the first step after
+ creating a new L{Transport}. A separate thread is created for protocol
+ negotiation.
+
+ If an event is passed in, this method returns immediately. When
+ negotiation is done (successful or not), the given C{Event} will
+ be triggered. On failure, L{is_active} will return C{False}.
+
+ (Since 1.4) If C{event} is C{None}, this method will not return until
+ negotation is done. On success, the method returns normally.
+ Otherwise an SSHException is raised.
+
+ After a successful negotiation, you will usually want to authenticate,
+ calling L{auth_password <Transport.auth_password>} or
+ L{auth_publickey <Transport.auth_publickey>}.
+
+ @note: L{connect} is a simpler method for connecting as a client.
+
+ @note: After calling this method (or L{start_server} or L{connect}),
+ you should no longer directly read from or write to the original
+ socket object.
+
+ @param event: an event to trigger when negotiation is complete
+ (optional)
+ @type event: threading.Event
+
+ @raise SSHException: if negotiation fails (and no C{event} was passed
+ in)
+ """
+ self.active = True
+ if event is not None:
+ # async, return immediately and let the app poll for completion
+ self.completion_event = event
+ self.start()
+ return
+
+ # synchronous, wait for a result
+ self.completion_event = event = threading.Event()
+ self.start()
+ while True:
+ event.wait(0.1)
+ if not self.active:
+ e = self.get_exception()
+ if e is not None:
+ raise e
+ raise SSHException('Negotiation failed.')
+ if event.isSet():
+ break
+
+ def start_server(self, event=None, server=None):
+ """
+ Negotiate a new SSH2 session as a server. This is the first step after
+ creating a new L{Transport} and setting up your server host key(s). A
+ separate thread is created for protocol negotiation.
+
+ If an event is passed in, this method returns immediately. When
+ negotiation is done (successful or not), the given C{Event} will
+ be triggered. On failure, L{is_active} will return C{False}.
+
+ (Since 1.4) If C{event} is C{None}, this method will not return until
+ negotation is done. On success, the method returns normally.
+ Otherwise an SSHException is raised.
+
+ After a successful negotiation, the client will need to authenticate.
+ Override the methods
+ L{get_allowed_auths <ServerInterface.get_allowed_auths>},
+ L{check_auth_none <ServerInterface.check_auth_none>},
+ L{check_auth_password <ServerInterface.check_auth_password>}, and
+ L{check_auth_publickey <ServerInterface.check_auth_publickey>} in the
+ given C{server} object to control the authentication process.
+
+ After a successful authentication, the client should request to open
+ a channel. Override
+ L{check_channel_request <ServerInterface.check_channel_request>} in the
+ given C{server} object to allow channels to be opened.
+
+ @note: After calling this method (or L{start_client} or L{connect}),
+ you should no longer directly read from or write to the original
+ socket object.
+
+ @param event: an event to trigger when negotiation is complete.
+ @type event: threading.Event
+ @param server: an object used to perform authentication and create
+ L{Channel}s.
+ @type server: L{server.ServerInterface}
+
+ @raise SSHException: if negotiation fails (and no C{event} was passed
+ in)
+ """
+ if server is None:
+ server = ServerInterface()
+ self.server_mode = True
+ self.server_object = server
+ self.active = True
+ if event is not None:
+ # async, return immediately and let the app poll for completion
+ self.completion_event = event
+ self.start()
+ return
+
+ # synchronous, wait for a result
+ self.completion_event = event = threading.Event()
+ self.start()
+ while True:
+ event.wait(0.1)
+ if not self.active:
+ e = self.get_exception()
+ if e is not None:
+ raise e
+ raise SSHException('Negotiation failed.')
+ if event.isSet():
+ break
+
+ def add_server_key(self, key):
+ """
+ Add a host key to the list of keys used for server mode. When behaving
+ as a server, the host key is used to sign certain packets during the
+ SSH2 negotiation, so that the client can trust that we are who we say
+ we are. Because this is used for signing, the key must contain private
+ key info, not just the public half. Only one key of each type (RSA or
+ DSS) is kept.
+
+ @param key: the host key to add, usually an L{RSAKey <rsakey.RSAKey>} or
+ L{DSSKey <dsskey.DSSKey>}.
+ @type key: L{PKey <pkey.PKey>}
+ """
+ self.server_key_dict[key.get_name()] = key
+
+ def get_server_key(self):
+ """
+ Return the active host key, in server mode. After negotiating with the
+ client, this method will return the negotiated host key. If only one
+ type of host key was set with L{add_server_key}, that's the only key
+ that will ever be returned. But in cases where you have set more than
+ one type of host key (for example, an RSA key and a DSS key), the key
+ type will be negotiated by the client, and this method will return the
+ key of the type agreed on. If the host key has not been negotiated
+ yet, C{None} is returned. In client mode, the behavior is undefined.
+
+ @return: host key of the type negotiated by the client, or C{None}.
+ @rtype: L{PKey <pkey.PKey>}
+ """
+ try:
+ return self.server_key_dict[self.host_key_type]
+ except KeyError:
+ return None
+
+ def load_server_moduli(filename=None):
+ """
+ I{(optional)}
+ Load a file of prime moduli for use in doing group-exchange key
+ negotiation in server mode. It's a rather obscure option and can be
+ safely ignored.
+
+ In server mode, the remote client may request "group-exchange" key
+ negotiation, which asks the server to send a random prime number that
+ fits certain criteria. These primes are pretty difficult to compute,
+ so they can't be generated on demand. But many systems contain a file
+ of suitable primes (usually named something like C{/etc/ssh/moduli}).
+ If you call C{load_server_moduli} and it returns C{True}, then this
+ file of primes has been loaded and we will support "group-exchange" in
+ server mode. Otherwise server mode will just claim that it doesn't
+ support that method of key negotiation.
+
+ @param filename: optional path to the moduli file, if you happen to
+ know that it's not in a standard location.
+ @type filename: str
+ @return: True if a moduli file was successfully loaded; False
+ otherwise.
+ @rtype: bool
+
+ @since: doduo
+
+ @note: This has no effect when used in client mode.
+ """
+ Transport._modulus_pack = ModulusPack(randpool)
+ # places to look for the openssh "moduli" file
+ file_list = [ '/etc/ssh/moduli', '/usr/local/etc/moduli' ]
+ if filename is not None:
+ file_list.insert(0, filename)
+ for fn in file_list:
+ try:
+ Transport._modulus_pack.read_file(fn)
+ return True
+ except IOError:
+ pass
+ # none succeeded
+ Transport._modulus_pack = None
+ return False
+ load_server_moduli = staticmethod(load_server_moduli)
+
+ def close(self):
+ """
+ Close this session, and any open channels that are tied to it.
+ """
+ self.active = False
+ # since this may be called from __del__, can't assume any attributes exist
+ try:
+ self.packetizer.close()
+ for chan in self.channels.values():
+ chan._unlink()
+ except AttributeError:
+ pass
+
+ def get_remote_server_key(self):
+ """
+ Return the host key of the server (in client mode).
+
+ @note: Previously this call returned a tuple of (key type, key string).
+ You can get the same effect by calling
+ L{PKey.get_name <pkey.PKey.get_name>} for the key type, and
+ C{str(key)} for the key string.
+
+ @raise SSHException: if no session is currently active.
+
+ @return: public key of the remote server.
+ @rtype: L{PKey <pkey.PKey>}
+ """
+ if (not self.active) or (not self.initial_kex_done):
+ raise SSHException('No existing session')
+ return self.host_key
+
+ def is_active(self):
+ """
+ Return true if this session is active (open).
+
+ @return: True if the session is still active (open); False if the
+ session is closed.
+ @rtype: bool
+ """
+ return self.active
+
+ def open_session(self):
+ """
+ Request a new channel to the server, of type C{"session"}. This
+ is just an alias for C{open_channel('session')}.
+
+ @return: a new L{Channel} on success, or C{None} if the request is
+ rejected or the session ends prematurely.
+ @rtype: L{Channel}
+ """
+ return self.open_channel('session')
+
+ def open_channel(self, kind, dest_addr=None, src_addr=None):
+ """
+ Request a new channel to the server. L{Channel}s are socket-like
+ objects used for the actual transfer of data across the session.
+ You may only request a channel after negotiating encryption (using
+ L{connect} or L{start_client}) and authenticating.
+
+ @param kind: the kind of channel requested (usually C{"session"},
+ C{"forwarded-tcpip"} or C{"direct-tcpip"}).
+ @type kind: str
+ @param dest_addr: the destination address of this port forwarding,
+ if C{kind} is C{"forwarded-tcpip"} or C{"direct-tcpip"} (ignored
+ for other channel types).
+ @type dest_addr: (str, int)
+ @param src_addr: the source address of this port forwarding, if
+ C{kind} is C{"forwarded-tcpip"} or C{"direct-tcpip"}.
+ @type src_addr: (str, int)
+ @return: a new L{Channel} on success, or C{None} if the request is
+ rejected or the session ends prematurely.
+ @rtype: L{Channel}
+ """
+ chan = None
+ if not self.active:
+ # don't bother trying to allocate a channel
+ return None
+ self.lock.acquire()
+ try:
+ chanid = self.channel_counter
+ while self.channels.has_key(chanid):
+ self.channel_counter = (self.channel_counter + 1) & 0xffffff
+ chanid = self.channel_counter
+ self.channel_counter = (self.channel_counter + 1) & 0xffffff
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_OPEN))
+ m.add_string(kind)
+ m.add_int(chanid)
+ m.add_int(self.window_size)
+ m.add_int(self.max_packet_size)
+ if (kind == 'forwarded-tcpip') or (kind == 'direct-tcpip'):
+ m.add_string(dest_addr[0])
+ m.add_int(dest_addr[1])
+ m.add_string(src_addr[0])
+ m.add_int(src_addr[1])
+ self.channels[chanid] = chan = Channel(chanid)
+ self.channel_events[chanid] = event = threading.Event()
+ self.channels_seen[chanid] = True
+ chan._set_transport(self)
+ chan._set_window(self.window_size, self.max_packet_size)
+ finally:
+ self.lock.release()
+ self._send_user_message(m)
+ while 1:
+ event.wait(0.1);
+ if not self.active:
+ return None
+ if event.isSet():
+ break
+ try:
+ self.lock.acquire()
+ if not self.channels.has_key(chanid):
+ chan = None
+ finally:
+ self.lock.release()
+ return chan
+
+ def open_sftp_client(self):
+ """
+ Create an SFTP client channel from an open transport. On success,
+ an SFTP session will be opened with the remote host, and a new
+ SFTPClient object will be returned.
+
+ @return: a new L{SFTPClient} object, referring to an sftp session
+ (channel) across this transport
+ @rtype: L{SFTPClient}
+ """
+ return SFTPClient.from_transport(self)
+
+ def send_ignore(self, bytes=None):
+ """
+ Send a junk packet across the encrypted link. This is sometimes used
+ to add "noise" to a connection to confuse would-be attackers. It can
+ also be used as a keep-alive for long lived connections traversing
+ firewalls.
+
+ @param bytes: the number of random bytes to send in the payload of the
+ ignored packet -- defaults to a random number from 10 to 41.
+ @type bytes: int
+
+ @since: fearow
+ """
+ m = Message()
+ m.add_byte(chr(MSG_IGNORE))
+ randpool.stir()
+ if bytes is None:
+ bytes = (ord(randpool.get_bytes(1)) % 32) + 10
+ m.add_bytes(randpool.get_bytes(bytes))
+ self._send_user_message(m)
+
+ def renegotiate_keys(self):
+ """
+ Force this session to switch to new keys. Normally this is done
+ automatically after the session hits a certain number of packets or
+ bytes sent or received, but this method gives you the option of forcing
+ new keys whenever you want. Negotiating new keys causes a pause in
+ traffic both ways as the two sides swap keys and do computations. This
+ method returns when the session has switched to new keys, or the
+ session has died mid-negotiation.
+
+ @return: True if the renegotiation was successful, and the link is
+ using new keys; False if the session dropped during renegotiation.
+ @rtype: bool
+ """
+ self.completion_event = threading.Event()
+ self._send_kex_init()
+ while 1:
+ self.completion_event.wait(0.1);
+ if not self.active:
+ return False
+ if self.completion_event.isSet():
+ break
+ return True
+
+ def set_keepalive(self, interval):
+ """
+ Turn on/off keepalive packets (default is off). If this is set, after
+ C{interval} seconds without sending any data over the connection, a
+ "keepalive" packet will be sent (and ignored by the remote host). This
+ can be useful to keep connections alive over a NAT, for example.
+
+ @param interval: seconds to wait before sending a keepalive packet (or
+ 0 to disable keepalives).
+ @type interval: int
+
+ @since: fearow
+ """
+ self.packetizer.set_keepalive(interval,
+ lambda x=self: x.global_request('keepalive@lag.net', wait=False))
+
+ def global_request(self, kind, data=None, wait=True):
+ """
+ Make a global request to the remote host. These are normally
+ extensions to the SSH2 protocol.
+
+ @param kind: name of the request.
+ @type kind: str
+ @param data: an optional tuple containing additional data to attach
+ to the request.
+ @type data: tuple
+ @param wait: C{True} if this method should not return until a response
+ is received; C{False} otherwise.
+ @type wait: bool
+ @return: a L{Message} containing possible additional data if the
+ request was successful (or an empty L{Message} if C{wait} was
+ C{False}); C{None} if the request was denied.
+ @rtype: L{Message}
+
+ @since: fearow
+ """
+ if wait:
+ self.completion_event = threading.Event()
+ m = Message()
+ m.add_byte(chr(MSG_GLOBAL_REQUEST))
+ m.add_string(kind)
+ m.add_boolean(wait)
+ if data is not None:
+ m.add(*data)
+ self._log(DEBUG, 'Sending global request "%s"' % kind)
+ self._send_user_message(m)
+ if not wait:
+ return None
+ while True:
+ self.completion_event.wait(0.1)
+ if not self.active:
+ return None
+ if self.completion_event.isSet():
+ break
+ return self.global_response
+
+ def accept(self, timeout=None):
+ """
+ Return the next channel opened by the client over this transport, in
+ server mode. If no channel is opened before the given timeout, C{None}
+ is returned.
+
+ @param timeout: seconds to wait for a channel, or C{None} to wait
+ forever
+ @type timeout: int
+ @return: a new Channel opened by the client
+ @rtype: L{Channel}
+ """
+ self.lock.acquire()
+ try:
+ if len(self.server_accepts) > 0:
+ chan = self.server_accepts.pop(0)
+ else:
+ self.server_accept_cv.wait(timeout)
+ if len(self.server_accepts) > 0:
+ chan = self.server_accepts.pop(0)
+ else:
+ # timeout
+ chan = None
+ finally:
+ self.lock.release()
+ return chan
+
+ def connect(self, hostkey=None, username='', password=None, pkey=None):
+ """
+ Negotiate an SSH2 session, and optionally verify the server's host key
+ and authenticate using a password or private key. This is a shortcut
+ for L{start_client}, L{get_remote_server_key}, and
+ L{Transport.auth_password} or L{Transport.auth_publickey}. Use those
+ methods if you want more control.
+
+ You can use this method immediately after creating a Transport to
+ negotiate encryption with a server. If it fails, an exception will be
+ thrown. On success, the method will return cleanly, and an encrypted
+ session exists. You may immediately call L{open_channel} or
+ L{open_session} to get a L{Channel} object, which is used for data
+ transfer.
+
+ @note: If you fail to supply a password or private key, this method may
+ succeed, but a subsequent L{open_channel} or L{open_session} call may
+ fail because you haven't authenticated yet.
+
+ @param hostkey: the host key expected from the server, or C{None} if
+ you don't want to do host key verification.
+ @type hostkey: L{PKey<pkey.PKey>}
+ @param username: the username to authenticate as.
+ @type username: str
+ @param password: a password to use for authentication, if you want to
+ use password authentication; otherwise C{None}.
+ @type password: str
+ @param pkey: a private key to use for authentication, if you want to
+ use private key authentication; otherwise C{None}.
+ @type pkey: L{PKey<pkey.PKey>}
+
+ @raise SSHException: if the SSH2 negotiation fails, the host key
+ supplied by the server is incorrect, or authentication fails.
+
+ @since: doduo
+ """
+ if hostkey is not None:
+ self._preferred_keys = [ hostkey.get_name() ]
+
+ self.start_client()
+
+ # check host key if we were given one
+ if (hostkey is not None):
+ key = self.get_remote_server_key()
+ if (key.get_name() != hostkey.get_name()) or (str(key) != str(hostkey)):
+ self._log(DEBUG, 'Bad host key from server')
+ self._log(DEBUG, 'Expected: %s: %s' % (hostkey.get_name(), repr(str(hostkey))))
+ self._log(DEBUG, 'Got : %s: %s' % (key.get_name(), repr(str(key))))
+ raise SSHException('Bad host key from server')
+ self._log(DEBUG, 'Host key verified (%s)' % hostkey.get_name())
+
+ if (pkey is not None) or (password is not None):
+ if password is not None:
+ self._log(DEBUG, 'Attempting password auth...')
+ self.auth_password(username, password)
+ else:
+ self._log(DEBUG, 'Attempting public-key auth...')
+ self.auth_publickey(username, pkey)
+
+ return
+
+ def get_exception(self):
+ """
+ Return any exception that happened during the last server request.
+ This can be used to fetch more specific error information after using
+ calls like L{start_client}. The exception (if any) is cleared after
+ this call.
+
+ @return: an exception, or C{None} if there is no stored exception.
+ @rtype: Exception
+
+ @since: 1.1
+ """
+ self.lock.acquire()
+ try:
+ e = self.saved_exception
+ self.saved_exception = None
+ return e
+ finally:
+ self.lock.release()
+
+ def set_subsystem_handler(self, name, handler, *larg, **kwarg):
+ """
+ Set the handler class for a subsystem in server mode. If a request
+ for this subsystem is made on an open ssh channel later, this handler
+ will be constructed and called -- see L{SubsystemHandler} for more
+ detailed documentation.
+
+ Any extra parameters (including keyword arguments) are saved and
+ passed to the L{SubsystemHandler} constructor later.
+
+ @param name: name of the subsystem.
+ @type name: str
+ @param handler: subclass of L{SubsystemHandler} that handles this
+ subsystem.
+ @type handler: class
+ """
+ try:
+ self.lock.acquire()
+ self.subsystem_table[name] = (handler, larg, kwarg)
+ finally:
+ self.lock.release()
+
+ def is_authenticated(self):
+ """
+ Return true if this session is active and authenticated.
+
+ @return: True if the session is still open and has been authenticated
+ successfully; False if authentication failed and/or the session is
+ closed.
+ @rtype: bool
+ """
+ return self.active and (self.auth_handler is not None) and self.auth_handler.is_authenticated()
+
+ def get_username(self):
+ """
+ Return the username this connection is authenticated for. If the
+ session is not authenticated (or authentication failed), this method
+ returns C{None}.
+
+ @return: username that was authenticated, or C{None}.
+ @rtype: string
+
+ @since: fearow
+ """
+ if not self.active or (self.auth_handler is None):
+ return None
+ return self.auth_handler.get_username()
+
+ def auth_none(self, username):
+ """
+ Try to authenticate to the server using no authentication at all.
+ This will almost always fail. It may be useful for determining the
+ list of authentication types supported by the server, by catching the
+ L{BadAuthenticationType} exception raised.
+
+ @param username: the username to authenticate as
+ @type username: string
+ @return: list of auth types permissible for the next stage of
+ authentication (normally empty)
+ @rtype: list
+
+ @raise BadAuthenticationType: if "none" authentication isn't allowed
+ by the server for this user
+ @raise SSHException: if the authentication failed due to a network
+ error
+
+ @since: 1.5
+ """
+ if (not self.active) or (not self.initial_kex_done):
+ raise SSHException('No existing session')
+ my_event = threading.Event()
+ self.auth_handler = AuthHandler(self)
+ self.auth_handler.auth_none(username, my_event)
+ return self.auth_handler.wait_for_response(my_event)
+
+ def auth_password(self, username, password, event=None, fallback=True):
+ """
+ Authenticate to the server using a password. The username and password
+ are sent over an encrypted link.
+
+ If an C{event} is passed in, this method will return immediately, and
+ the event will be triggered once authentication succeeds or fails. On
+ success, L{is_authenticated} will return C{True}. On failure, you may
+ use L{get_exception} to get more detailed error information.
+
+ Since 1.1, if no event is passed, this method will block until the
+ authentication succeeds or fails. On failure, an exception is raised.
+ Otherwise, the method simply returns.
+
+ Since 1.5, if no event is passed and C{fallback} is C{True} (the
+ default), if the server doesn't support plain password authentication
+ but does support so-called "keyboard-interactive" mode, an attempt
+ will be made to authenticate using this interactive mode. If it fails,
+ the normal exception will be thrown as if the attempt had never been
+ made. This is useful for some recent Gentoo and Debian distributions,
+ which turn off plain password authentication in a misguided belief
+ that interactive authentication is "more secure". (It's not.)
+
+ If the server requires multi-step authentication (which is very rare),
+ this method will return a list of auth types permissible for the next
+ step. Otherwise, in the normal case, an empty list is returned.
+
+ @param username: the username to authenticate as
+ @type username: string
+ @param password: the password to authenticate with
+ @type password: string
+ @param event: an event to trigger when the authentication attempt is
+ complete (whether it was successful or not)
+ @type event: threading.Event
+ @param fallback: C{True} if an attempt at an automated "interactive"
+ password auth should be made if the server doesn't support normal
+ password auth
+ @type fallback: bool
+ @return: list of auth types permissible for the next stage of
+ authentication (normally empty)
+ @rtype: list
+
+ @raise BadAuthenticationType: if password authentication isn't
+ allowed by the server for this user (and no event was passed in)
+ @raise SSHException: if the authentication failed (and no event was
+ passed in)
+ """
+ if (not self.active) or (not self.initial_kex_done):
+ # we should never try to send the password unless we're on a secure link
+ raise SSHException('No existing session')
+ if event is None:
+ my_event = threading.Event()
+ else:
+ my_event = event
+ self.auth_handler = AuthHandler(self)
+ self.auth_handler.auth_password(username, password, my_event)
+ if event is not None:
+ # caller wants to wait for event themselves
+ return []
+ try:
+ return self.auth_handler.wait_for_response(my_event)
+ except BadAuthenticationType, x:
+ # if password auth isn't allowed, but keyboard-interactive *is*, try to fudge it
+ if not fallback or not 'keyboard-interactive' in x.allowed_types:
+ raise
+ try:
+ def handler(title, instructions, fields):
+ if len(fields) > 1:
+ raise SSHException('Fallback authentication failed.')
+ if len(fields) == 0:
+ # for some reason, at least on os x, a 2nd request will
+ # be made with zero fields requested. maybe it's just
+ # to try to fake out automated scripting of the exact
+ # type we're doing here. *shrug* :)
+ return []
+ return [ password ]
+ return self.auth_interactive(username, handler)
+ except SSHException, ignored:
+ # attempt failed; just raise the original exception
+ raise x
+
+ def auth_publickey(self, username, key, event=None):
+ """
+ Authenticate to the server using a private key. The key is used to
+ sign data from the server, so it must include the private part.
+
+ If an C{event} is passed in, this method will return immediately, and
+ the event will be triggered once authentication succeeds or fails. On
+ success, L{is_authenticated} will return C{True}. On failure, you may
+ use L{get_exception} to get more detailed error information.
+
+ Since 1.1, if no event is passed, this method will block until the
+ authentication succeeds or fails. On failure, an exception is raised.
+ Otherwise, the method simply returns.
+
+ If the server requires multi-step authentication (which is very rare),
+ this method will return a list of auth types permissible for the next
+ step. Otherwise, in the normal case, an empty list is returned.
+
+ @param username: the username to authenticate as
+ @type username: string
+ @param key: the private key to authenticate with
+ @type key: L{PKey <pkey.PKey>}
+ @param event: an event to trigger when the authentication attempt is
+ complete (whether it was successful or not)
+ @type event: threading.Event
+ @return: list of auth types permissible for the next stage of
+ authentication (normally empty).
+ @rtype: list
+
+ @raise BadAuthenticationType: if public-key authentication isn't
+ allowed by the server for this user (and no event was passed in).
+ @raise SSHException: if the authentication failed (and no event was
+ passed in).
+ """
+ if (not self.active) or (not self.initial_kex_done):
+ # we should never try to authenticate unless we're on a secure link
+ raise SSHException('No existing session')
+ if event is None:
+ my_event = threading.Event()
+ else:
+ my_event = event
+ self.auth_handler = AuthHandler(self)
+ self.auth_handler.auth_publickey(username, key, my_event)
+ if event is not None:
+ # caller wants to wait for event themselves
+ return []
+ return self.auth_handler.wait_for_response(my_event)
+
+ def auth_interactive(self, username, handler, submethods=''):
+ """
+ Authenticate to the server interactively. A handler is used to answer
+ arbitrary questions from the server. On many servers, this is just a
+ dumb wrapper around PAM.
+
+ This method will block until the authentication succeeds or fails,
+ peroidically calling the handler asynchronously to get answers to
+ authentication questions. The handler may be called more than once
+ if the server continues to ask questions.
+
+ The handler is expected to be a callable that will handle calls of the
+ form: C{handler(title, instructions, prompt_list)}. The C{title} is
+ meant to be a dialog-window title, and the C{instructions} are user
+ instructions (both are strings). C{prompt_list} will be a list of
+ prompts, each prompt being a tuple of C{(str, bool)}. The string is
+ the prompt and the boolean indicates whether the user text should be
+ echoed.
+
+ A sample call would thus be:
+ C{handler('title', 'instructions', [('Password:', False)])}.
+
+ The handler should return a list or tuple of answers to the server's
+ questions.
+
+ If the server requires multi-step authentication (which is very rare),
+ this method will return a list of auth types permissible for the next
+ step. Otherwise, in the normal case, an empty list is returned.
+
+ @param username: the username to authenticate as
+ @type username: string
+ @param handler: a handler for responding to server questions
+ @type handler: callable
+ @param submethods: a string list of desired submethods (optional)
+ @type submethods: str
+ @return: list of auth types permissible for the next stage of
+ authentication (normally empty).
+ @rtype: list
+
+ @raise BadAuthenticationType: if public-key authentication isn't
+ allowed by the server for this user
+ @raise SSHException: if the authentication failed
+
+ @since: 1.5
+ """
+ if (not self.active) or (not self.initial_kex_done):
+ # we should never try to authenticate unless we're on a secure link
+ raise SSHException('No existing session')
+ my_event = threading.Event()
+ self.auth_handler = AuthHandler(self)
+ self.auth_handler.auth_interactive(username, handler, my_event, submethods)
+ return self.auth_handler.wait_for_response(my_event)
+
+ def set_log_channel(self, name):
+ """
+ Set the channel for this transport's logging. The default is
+ C{"paramiko.transport"} but it can be set to anything you want.
+ (See the C{logging} module for more info.) SSH Channels will log
+ to a sub-channel of the one specified.
+
+ @param name: new channel name for logging.
+ @type name: str
+
+ @since: 1.1
+ """
+ self.log_name = name
+ self.logger = util.get_logger(name)
+
+ def get_log_channel(self):
+ """
+ Return the channel name used for this transport's logging.
+
+ @return: channel name.
+ @rtype: str
+
+ @since: 1.2
+ """
+ return self.log_name
+
+ def set_hexdump(self, hexdump):
+ """
+ Turn on/off logging a hex dump of protocol traffic at DEBUG level in
+ the logs. Normally you would want this off (which is the default),
+ but if you are debugging something, it may be useful.
+
+ @param hexdump: C{True} to log protocol traffix (in hex) to the log;
+ C{False} otherwise.
+ @type hexdump: bool
+ """
+ self.packetizer.set_hexdump(hexdump)
+
+ def get_hexdump(self):
+ """
+ Return C{True} if the transport is currently logging hex dumps of
+ protocol traffic.
+
+ @return: C{True} if hex dumps are being logged
+ @rtype: bool
+
+ @since: 1.4
+ """
+ return self.packetizer.get_hexdump()
+
+ def use_compression(self, compress=True):
+ """
+ Turn on/off compression. This will only have an affect before starting
+ the transport (ie before calling L{connect}, etc). By default,
+ compression is off since it negatively affects interactive sessions
+ and is not fully tested.
+
+ @param compress: C{True} to ask the remote client/server to compress
+ traffic; C{False} to refuse compression
+ @type compress: bool
+
+ @since: 1.5.2
+ """
+ if compress:
+ self._preferred_compression = ( 'zlib@openssh.com', 'zlib', 'none' )
+ else:
+ self._preferred_compression = ( 'none', )
+
+ def stop_thread(self):
+ self.active = False
+ self.packetizer.close()
+
+
+ ### internals...
+
+
+ def _log(self, level, msg):
+ if issubclass(type(msg), list):
+ for m in msg:
+ self.logger.log(level, m)
+ else:
+ self.logger.log(level, msg)
+
+ def _get_modulus_pack(self):
+ "used by KexGex to find primes for group exchange"
+ return self._modulus_pack
+
+ def _unlink_channel(self, chanid):
+ "used by a Channel to remove itself from the active channel list"
+ try:
+ self.lock.acquire()
+ if self.channels.has_key(chanid):
+ del self.channels[chanid]
+ finally:
+ self.lock.release()
+
+ def _send_message(self, data):
+ self.packetizer.send_message(data)
+
+ def _send_user_message(self, data):
+ """
+ send a message, but block if we're in key negotiation. this is used
+ for user-initiated requests.
+ """
+ while True:
+ self.clear_to_send.wait(0.1)
+ if not self.active:
+ self._log(DEBUG, 'Dropping user packet because connection is dead.')
+ return
+ self.clear_to_send_lock.acquire()
+ if self.clear_to_send.isSet():
+ break
+ self.clear_to_send_lock.release()
+ try:
+ self._send_message(data)
+ finally:
+ self.clear_to_send_lock.release()
+
+ def _set_K_H(self, k, h):
+ "used by a kex object to set the K (root key) and H (exchange hash)"
+ self.K = k
+ self.H = h
+ if self.session_id == None:
+ self.session_id = h
+
+ def _expect_packet(self, type):
+ "used by a kex object to register the next packet type it expects to see"
+ self.expected_packet = type
+
+ def _verify_key(self, host_key, sig):
+ key = self._key_info[self.host_key_type](Message(host_key))
+ if key is None:
+ raise SSHException('Unknown host key type')
+ if not key.verify_ssh_sig(self.H, Message(sig)):
+ raise SSHException('Signature verification (%s) failed. Boo. Robey should debug this.' % self.host_key_type)
+ self.host_key = key
+
+ def _compute_key(self, id, nbytes):
+ "id is 'A' - 'F' for the various keys used by ssh"
+ m = Message()
+ m.add_mpint(self.K)
+ m.add_bytes(self.H)
+ m.add_byte(id)
+ m.add_bytes(self.session_id)
+ out = sofar = SHA.new(str(m)).digest()
+ while len(out) < nbytes:
+ m = Message()
+ m.add_mpint(self.K)
+ m.add_bytes(self.H)
+ m.add_bytes(sofar)
+ hash = SHA.new(str(m)).digest()
+ out += hash
+ sofar += hash
+ return out[:nbytes]
+
+ def _get_cipher(self, name, key, iv):
+ if not self._cipher_info.has_key(name):
+ raise SSHException('Unknown client cipher ' + name)
+ return self._cipher_info[name]['class'].new(key, self._cipher_info[name]['mode'], iv)
+
+ def run(self):
+ # (use the exposed "run" method, because if we specify a thread target
+ # of a private method, threading.Thread will keep a reference to it
+ # indefinitely, creating a GC cycle and not letting Transport ever be
+ # GC'd. it's a bug in Thread.)
+
+ # active=True occurs before the thread is launched, to avoid a race
+ _active_threads.append(self)
+ if self.server_mode:
+ self._log(DEBUG, 'starting thread (server mode): %s' % hex(long(id(self)) & 0xffffffffL))
+ else:
+ self._log(DEBUG, 'starting thread (client mode): %s' % hex(long(id(self)) & 0xffffffffL))
+ try:
+ self.packetizer.write_all(self.local_version + '\r\n')
+ self._check_banner()
+ self._send_kex_init()
+ self.expected_packet = MSG_KEXINIT
+
+ while self.active:
+ if self.packetizer.need_rekey() and not self.in_kex:
+ self._send_kex_init()
+ try:
+ ptype, m = self.packetizer.read_message()
+ except NeedRekeyException:
+ continue
+ if ptype == MSG_IGNORE:
+ continue
+ elif ptype == MSG_DISCONNECT:
+ self._parse_disconnect(m)
+ self.active = False
+ self.packetizer.close()
+ break
+ elif ptype == MSG_DEBUG:
+ self._parse_debug(m)
+ continue
+ if self.expected_packet != 0:
+ if ptype != self.expected_packet:
+ raise SSHException('Expecting packet %d, got %d' % (self.expected_packet, ptype))
+ self.expected_packet = 0
+ if (ptype >= 30) and (ptype <= 39):
+ self.kex_engine.parse_next(ptype, m)
+ continue
+
+ if self._handler_table.has_key(ptype):
+ self._handler_table[ptype](self, m)
+ elif self._channel_handler_table.has_key(ptype):
+ chanid = m.get_int()
+ if self.channels.has_key(chanid):
+ self._channel_handler_table[ptype](self.channels[chanid], m)
+ elif self.channels_seen.has_key(chanid):
+ self._log(DEBUG, 'Ignoring message for dead channel %d' % chanid)
+ else:
+ self._log(ERROR, 'Channel request for unknown channel %d' % chanid)
+ self.active = False
+ self.packetizer.close()
+ elif (self.auth_handler is not None) and self.auth_handler._handler_table.has_key(ptype):
+ self.auth_handler._handler_table[ptype](self.auth_handler, m)
+ else:
+ self._log(WARNING, 'Oops, unhandled type %d' % ptype)
+ msg = Message()
+ msg.add_byte(chr(MSG_UNIMPLEMENTED))
+ msg.add_int(m.seqno)
+ self._send_message(msg)
+ except SSHException, e:
+ self._log(ERROR, 'Exception: ' + str(e))
+ self._log(ERROR, util.tb_strings())
+ self.saved_exception = e
+ except EOFError, e:
+ self._log(DEBUG, 'EOF in transport thread')
+ #self._log(DEBUG, util.tb_strings())
+ self.saved_exception = e
+ except socket.error, e:
+ if type(e.args) is tuple:
+ emsg = '%s (%d)' % (e.args[1], e.args[0])
+ else:
+ emsg = e.args
+ self._log(ERROR, 'Socket exception: ' + emsg)
+ self.saved_exception = e
+ except Exception, e:
+ self._log(ERROR, 'Unknown exception: ' + str(e))
+ self._log(ERROR, util.tb_strings())
+ self.saved_exception = e
+ _active_threads.remove(self)
+ for chan in self.channels.values():
+ chan._unlink()
+ if self.active:
+ self.active = False
+ self.packetizer.close()
+ if self.completion_event != None:
+ self.completion_event.set()
+ if self.auth_handler is not None:
+ self.auth_handler.abort()
+ for event in self.channel_events.values():
+ event.set()
+ self.sock.close()
+
+
+ ### protocol stages
+
+
+ def _negotiate_keys(self, m):
+ # throws SSHException on anything unusual
+ self.clear_to_send_lock.acquire()
+ try:
+ self.clear_to_send.clear()
+ finally:
+ self.clear_to_send_lock.release()
+ if self.local_kex_init == None:
+ # remote side wants to renegotiate
+ self._send_kex_init()
+ self._parse_kex_init(m)
+ self.kex_engine.start_kex()
+
+ def _check_banner(self):
+ # this is slow, but we only have to do it once
+ for i in range(5):
+ # give them 5 seconds for the first line, then just 2 seconds each additional line
+ if i == 0:
+ timeout = 5
+ else:
+ timeout = 2
+ try:
+ buffer = self.packetizer.readline(timeout)
+ except Exception, x:
+ raise SSHException('Error reading SSH protocol banner' + str(x))
+ if buffer[:4] == 'SSH-':
+ break
+ self._log(DEBUG, 'Banner: ' + buffer)
+ if buffer[:4] != 'SSH-':
+ raise SSHException('Indecipherable protocol version "' + buffer + '"')
+ # save this server version string for later
+ self.remote_version = buffer
+ # pull off any attached comment
+ comment = ''
+ i = string.find(buffer, ' ')
+ if i >= 0:
+ comment = buffer[i+1:]
+ buffer = buffer[:i]
+ # parse out version string and make sure it matches
+ segs = buffer.split('-', 2)
+ if len(segs) < 3:
+ raise SSHException('Invalid SSH banner')
+ version = segs[1]
+ client = segs[2]
+ if version != '1.99' and version != '2.0':
+ raise SSHException('Incompatible version (%s instead of 2.0)' % (version,))
+ self._log(INFO, 'Connected (version %s, client %s)' % (version, client))
+
+ def _send_kex_init(self):
+ """
+ announce to the other side that we'd like to negotiate keys, and what
+ kind of key negotiation we support.
+ """
+ self.clear_to_send_lock.acquire()
+ try:
+ self.clear_to_send.clear()
+ finally:
+ self.clear_to_send_lock.release()
+ self.in_kex = True
+ if self.server_mode:
+ if (self._modulus_pack is None) and ('diffie-hellman-group-exchange-sha1' in self._preferred_kex):
+ # can't do group-exchange if we don't have a pack of potential primes
+ pkex = list(self.get_security_options().kex)
+ pkex.remove('diffie-hellman-group-exchange-sha1')
+ self.get_security_options().kex = pkex
+ available_server_keys = filter(self.server_key_dict.keys().__contains__,
+ self._preferred_keys)
+ else:
+ available_server_keys = self._preferred_keys
+
+ randpool.stir()
+ m = Message()
+ m.add_byte(chr(MSG_KEXINIT))
+ m.add_bytes(randpool.get_bytes(16))
+ m.add_list(self._preferred_kex)
+ m.add_list(available_server_keys)
+ m.add_list(self._preferred_ciphers)
+ m.add_list(self._preferred_ciphers)
+ m.add_list(self._preferred_macs)
+ m.add_list(self._preferred_macs)
+ m.add_list(self._preferred_compression)
+ m.add_list(self._preferred_compression)
+ m.add_string('')
+ m.add_string('')
+ m.add_boolean(False)
+ m.add_int(0)
+ # save a copy for later (needed to compute a hash)
+ self.local_kex_init = str(m)
+ self._send_message(m)
+
+ def _parse_kex_init(self, m):
+ cookie = m.get_bytes(16)
+ kex_algo_list = m.get_list()
+ server_key_algo_list = m.get_list()
+ client_encrypt_algo_list = m.get_list()
+ server_encrypt_algo_list = m.get_list()
+ client_mac_algo_list = m.get_list()
+ server_mac_algo_list = m.get_list()
+ client_compress_algo_list = m.get_list()
+ server_compress_algo_list = m.get_list()
+ client_lang_list = m.get_list()
+ server_lang_list = m.get_list()
+ kex_follows = m.get_boolean()
+ unused = m.get_int()
+
+ self._log(DEBUG, 'kex algos:' + str(kex_algo_list) + ' server key:' + str(server_key_algo_list) + \
+ ' client encrypt:' + str(client_encrypt_algo_list) + \
+ ' server encrypt:' + str(server_encrypt_algo_list) + \
+ ' client mac:' + str(client_mac_algo_list) + \
+ ' server mac:' + str(server_mac_algo_list) + \
+ ' client compress:' + str(client_compress_algo_list) + \
+ ' server compress:' + str(server_compress_algo_list) + \
+ ' client lang:' + str(client_lang_list) + \
+ ' server lang:' + str(server_lang_list) + \
+ ' kex follows?' + str(kex_follows))
+
+ # as a server, we pick the first item in the client's list that we support.
+ # as a client, we pick the first item in our list that the server supports.
+ if self.server_mode:
+ agreed_kex = filter(self._preferred_kex.__contains__, kex_algo_list)
+ else:
+ agreed_kex = filter(kex_algo_list.__contains__, self._preferred_kex)
+ if len(agreed_kex) == 0:
+ raise SSHException('Incompatible ssh peer (no acceptable kex algorithm)')
+ self.kex_engine = self._kex_info[agreed_kex[0]](self)
+
+ if self.server_mode:
+ available_server_keys = filter(self.server_key_dict.keys().__contains__,
+ self._preferred_keys)
+ agreed_keys = filter(available_server_keys.__contains__, server_key_algo_list)
+ else:
+ agreed_keys = filter(server_key_algo_list.__contains__, self._preferred_keys)
+ if len(agreed_keys) == 0:
+ raise SSHException('Incompatible ssh peer (no acceptable host key)')
+ self.host_key_type = agreed_keys[0]
+ if self.server_mode and (self.get_server_key() is None):
+ raise SSHException('Incompatible ssh peer (can\'t match requested host key type)')
+
+ if self.server_mode:
+ agreed_local_ciphers = filter(self._preferred_ciphers.__contains__,
+ server_encrypt_algo_list)
+ agreed_remote_ciphers = filter(self._preferred_ciphers.__contains__,
+ client_encrypt_algo_list)
+ else:
+ agreed_local_ciphers = filter(client_encrypt_algo_list.__contains__,
+ self._preferred_ciphers)
+ agreed_remote_ciphers = filter(server_encrypt_algo_list.__contains__,
+ self._preferred_ciphers)
+ if (len(agreed_local_ciphers) == 0) or (len(agreed_remote_ciphers) == 0):
+ raise SSHException('Incompatible ssh server (no acceptable ciphers)')
+ self.local_cipher = agreed_local_ciphers[0]
+ self.remote_cipher = agreed_remote_ciphers[0]
+ self._log(DEBUG, 'Ciphers agreed: local=%s, remote=%s' % (self.local_cipher, self.remote_cipher))
+
+ if self.server_mode:
+ agreed_remote_macs = filter(self._preferred_macs.__contains__, client_mac_algo_list)
+ agreed_local_macs = filter(self._preferred_macs.__contains__, server_mac_algo_list)
+ else:
+ agreed_local_macs = filter(client_mac_algo_list.__contains__, self._preferred_macs)
+ agreed_remote_macs = filter(server_mac_algo_list.__contains__, self._preferred_macs)
+ if (len(agreed_local_macs) == 0) or (len(agreed_remote_macs) == 0):
+ raise SSHException('Incompatible ssh server (no acceptable macs)')
+ self.local_mac = agreed_local_macs[0]
+ self.remote_mac = agreed_remote_macs[0]
+
+ if self.server_mode:
+ agreed_remote_compression = filter(self._preferred_compression.__contains__, client_compress_algo_list)
+ agreed_local_compression = filter(self._preferred_compression.__contains__, server_compress_algo_list)
+ else:
+ agreed_local_compression = filter(client_compress_algo_list.__contains__, self._preferred_compression)
+ agreed_remote_compression = filter(server_compress_algo_list.__contains__, self._preferred_compression)
+ if (len(agreed_local_compression) == 0) or (len(agreed_remote_compression) == 0):
+ raise SSHException('Incompatible ssh server (no acceptable compression) %r %r %r' % (agreed_local_compression, agreed_remote_compression, self._preferred_compression))
+ self.local_compression = agreed_local_compression[0]
+ self.remote_compression = agreed_remote_compression[0]
+
+ self._log(DEBUG, 'using kex %s; server key type %s; cipher: local %s, remote %s; mac: local %s, remote %s; compression: local %s, remote %s' %
+ (agreed_kex[0], self.host_key_type, self.local_cipher, self.remote_cipher, self.local_mac,
+ self.remote_mac, self.local_compression, self.remote_compression))
+
+ # save for computing hash later...
+ # now wait! openssh has a bug (and others might too) where there are
+ # actually some extra bytes (one NUL byte in openssh's case) added to
+ # the end of the packet but not parsed. turns out we need to throw
+ # away those bytes because they aren't part of the hash.
+ self.remote_kex_init = chr(MSG_KEXINIT) + m.get_so_far()
+
+ def _activate_inbound(self):
+ "switch on newly negotiated encryption parameters for inbound traffic"
+ block_size = self._cipher_info[self.remote_cipher]['block-size']
+ if self.server_mode:
+ IV_in = self._compute_key('A', block_size)
+ key_in = self._compute_key('C', self._cipher_info[self.remote_cipher]['key-size'])
+ else:
+ IV_in = self._compute_key('B', block_size)
+ key_in = self._compute_key('D', self._cipher_info[self.remote_cipher]['key-size'])
+ engine = self._get_cipher(self.remote_cipher, key_in, IV_in)
+ mac_size = self._mac_info[self.remote_mac]['size']
+ mac_engine = self._mac_info[self.remote_mac]['class']
+ # initial mac keys are done in the hash's natural size (not the potentially truncated
+ # transmission size)
+ if self.server_mode:
+ mac_key = self._compute_key('E', mac_engine.digest_size)
+ else:
+ mac_key = self._compute_key('F', mac_engine.digest_size)
+ self.packetizer.set_inbound_cipher(engine, block_size, mac_engine, mac_size, mac_key)
+ compress_in = self._compression_info[self.remote_compression][1]
+ if (compress_in is not None) and ((self.remote_compression != 'zlib@openssh.com') or self.authenticated):
+ self._log(DEBUG, 'Switching on inbound compression ...')
+ self.packetizer.set_inbound_compressor(compress_in())
+
+ def _activate_outbound(self):
+ "switch on newly negotiated encryption parameters for outbound traffic"
+ m = Message()
+ m.add_byte(chr(MSG_NEWKEYS))
+ self._send_message(m)
+ block_size = self._cipher_info[self.local_cipher]['block-size']
+ if self.server_mode:
+ IV_out = self._compute_key('B', block_size)
+ key_out = self._compute_key('D', self._cipher_info[self.local_cipher]['key-size'])
+ else:
+ IV_out = self._compute_key('A', block_size)
+ key_out = self._compute_key('C', self._cipher_info[self.local_cipher]['key-size'])
+ engine = self._get_cipher(self.local_cipher, key_out, IV_out)
+ mac_size = self._mac_info[self.local_mac]['size']
+ mac_engine = self._mac_info[self.local_mac]['class']
+ # initial mac keys are done in the hash's natural size (not the potentially truncated
+ # transmission size)
+ if self.server_mode:
+ mac_key = self._compute_key('F', mac_engine.digest_size)
+ else:
+ mac_key = self._compute_key('E', mac_engine.digest_size)
+ self.packetizer.set_outbound_cipher(engine, block_size, mac_engine, mac_size, mac_key)
+ compress_out = self._compression_info[self.local_compression][0]
+ if (compress_out is not None) and ((self.local_compression != 'zlib@openssh.com') or self.authenticated):
+ self._log(DEBUG, 'Switching on outbound compression ...')
+ self.packetizer.set_outbound_compressor(compress_out())
+ if not self.packetizer.need_rekey():
+ self.in_kex = False
+ # we always expect to receive NEWKEYS now
+ self.expected_packet = MSG_NEWKEYS
+
+ def _auth_trigger(self):
+ self.authenticated = True
+ # delayed initiation of compression
+ if self.local_compression == 'zlib@openssh.com':
+ compress_out = self._compression_info[self.local_compression][0]
+ self._log(DEBUG, 'Switching on outbound compression ...')
+ self.packetizer.set_outbound_compressor(compress_out())
+ if self.remote_compression == 'zlib@openssh.com':
+ compress_in = self._compression_info[self.remote_compression][1]
+ self._log(DEBUG, 'Switching on inbound compression ...')
+ self.packetizer.set_inbound_compressor(compress_in())
+
+ def _parse_newkeys(self, m):
+ self._log(DEBUG, 'Switch to new keys ...')
+ self._activate_inbound()
+ # can also free a bunch of stuff here
+ self.local_kex_init = self.remote_kex_init = None
+ self.K = None
+ self.kex_engine = None
+ if self.server_mode and (self.auth_handler is None):
+ # create auth handler for server mode
+ self.auth_handler = AuthHandler(self)
+ if not self.initial_kex_done:
+ # this was the first key exchange
+ self.initial_kex_done = True
+ # send an event?
+ if self.completion_event != None:
+ self.completion_event.set()
+ # it's now okay to send data again (if this was a re-key)
+ if not self.packetizer.need_rekey():
+ self.in_kex = False
+ self.clear_to_send_lock.acquire()
+ try:
+ self.clear_to_send.set()
+ finally:
+ self.clear_to_send_lock.release()
+ return
+
+ def _parse_disconnect(self, m):
+ code = m.get_int()
+ desc = m.get_string()
+ self._log(INFO, 'Disconnect (code %d): %s' % (code, desc))
+
+ def _parse_global_request(self, m):
+ kind = m.get_string()
+ self._log(DEBUG, 'Received global request "%s"' % kind)
+ want_reply = m.get_boolean()
+ ok = self.server_object.check_global_request(kind, m)
+ extra = ()
+ if type(ok) is tuple:
+ extra = ok
+ ok = True
+ if want_reply:
+ msg = Message()
+ if ok:
+ msg.add_byte(chr(MSG_REQUEST_SUCCESS))
+ msg.add(*extra)
+ else:
+ msg.add_byte(chr(MSG_REQUEST_FAILURE))
+ self._send_message(msg)
+
+ def _parse_request_success(self, m):
+ self._log(DEBUG, 'Global request successful.')
+ self.global_response = m
+ if self.completion_event is not None:
+ self.completion_event.set()
+
+ def _parse_request_failure(self, m):
+ self._log(DEBUG, 'Global request denied.')
+ self.global_response = None
+ if self.completion_event is not None:
+ self.completion_event.set()
+
+ def _parse_channel_open_success(self, m):
+ chanid = m.get_int()
+ server_chanid = m.get_int()
+ server_window_size = m.get_int()
+ server_max_packet_size = m.get_int()
+ if not self.channels.has_key(chanid):
+ self._log(WARNING, 'Success for unrequested channel! [??]')
+ return
+ self.lock.acquire()
+ try:
+ chan = self.channels[chanid]
+ chan._set_remote_channel(server_chanid, server_window_size, server_max_packet_size)
+ self._log(INFO, 'Secsh channel %d opened.' % chanid)
+ if self.channel_events.has_key(chanid):
+ self.channel_events[chanid].set()
+ del self.channel_events[chanid]
+ finally:
+ self.lock.release()
+ return
+
+ def _parse_channel_open_failure(self, m):
+ chanid = m.get_int()
+ reason = m.get_int()
+ reason_str = m.get_string()
+ lang = m.get_string()
+ if CONNECTION_FAILED_CODE.has_key(reason):
+ reason_text = CONNECTION_FAILED_CODE[reason]
+ else:
+ reason_text = '(unknown code)'
+ self._log(INFO, 'Secsh channel %d open FAILED: %s: %s' % (chanid, reason_str, reason_text))
+ try:
+ self.lock.aquire()
+ if self.channels.has_key(chanid):
+ del self.channels[chanid]
+ if self.channel_events.has_key(chanid):
+ self.channel_events[chanid].set()
+ del self.channel_events[chanid]
+ finally:
+ self.lock.release()
+ return
+
+ def _parse_channel_open(self, m):
+ kind = m.get_string()
+ chanid = m.get_int()
+ initial_window_size = m.get_int()
+ max_packet_size = m.get_int()
+ reject = False
+ if not self.server_mode:
+ self._log(DEBUG, 'Rejecting "%s" channel request from server.' % kind)
+ reject = True
+ reason = OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED
+ else:
+ self.lock.acquire()
+ try:
+ my_chanid = self.channel_counter
+ while self.channels.has_key(my_chanid):
+ self.channel_counter = (self.channel_counter + 1) & 0xffffff
+ my_chanid = self.channel_counter
+ self.channel_counter = (self.channel_counter + 1) & 0xffffff
+ finally:
+ self.lock.release()
+ reason = self.server_object.check_channel_request(kind, my_chanid)
+ if reason != OPEN_SUCCEEDED:
+ self._log(DEBUG, 'Rejecting "%s" channel request from client.' % kind)
+ reject = True
+ if reject:
+ msg = Message()
+ msg.add_byte(chr(MSG_CHANNEL_OPEN_FAILURE))
+ msg.add_int(chanid)
+ msg.add_int(reason)
+ msg.add_string('')
+ msg.add_string('en')
+ self._send_message(msg)
+ return
+ chan = Channel(my_chanid)
+ try:
+ self.lock.acquire()
+ self.channels[my_chanid] = chan
+ self.channels_seen[my_chanid] = True
+ chan._set_transport(self)
+ chan._set_window(self.window_size, self.max_packet_size)
+ chan._set_remote_channel(chanid, initial_window_size, max_packet_size)
+ finally:
+ self.lock.release()
+ m = Message()
+ m.add_byte(chr(MSG_CHANNEL_OPEN_SUCCESS))
+ m.add_int(chanid)
+ m.add_int(my_chanid)
+ m.add_int(self.window_size)
+ m.add_int(self.max_packet_size)
+ self._send_message(m)
+ self._log(INFO, 'Secsh channel %d opened.' % my_chanid)
+ try:
+ self.lock.acquire()
+ self.server_accepts.append(chan)
+ self.server_accept_cv.notify()
+ finally:
+ self.lock.release()
+
+ def _parse_debug(self, m):
+ always_display = m.get_boolean()
+ msg = m.get_string()
+ lang = m.get_string()
+ self._log(DEBUG, 'Debug msg: ' + util.safe_string(msg))
+
+ def _get_subsystem_handler(self, name):
+ try:
+ self.lock.acquire()
+ if not self.subsystem_table.has_key(name):
+ return (None, [], {})
+ return self.subsystem_table[name]
+ finally:
+ self.lock.release()
+
+ _handler_table = {
+ MSG_NEWKEYS: _parse_newkeys,
+ MSG_GLOBAL_REQUEST: _parse_global_request,
+ MSG_REQUEST_SUCCESS: _parse_request_success,
+ MSG_REQUEST_FAILURE: _parse_request_failure,
+ MSG_CHANNEL_OPEN_SUCCESS: _parse_channel_open_success,
+ MSG_CHANNEL_OPEN_FAILURE: _parse_channel_open_failure,
+ MSG_CHANNEL_OPEN: _parse_channel_open,
+ MSG_KEXINIT: _negotiate_keys,
+ }
+
+ _channel_handler_table = {
+ MSG_CHANNEL_SUCCESS: Channel._request_success,
+ MSG_CHANNEL_FAILURE: Channel._request_failed,
+ MSG_CHANNEL_DATA: Channel._feed,
+ MSG_CHANNEL_EXTENDED_DATA: Channel._feed_extended,
+ MSG_CHANNEL_WINDOW_ADJUST: Channel._window_adjust,
+ MSG_CHANNEL_REQUEST: Channel._handle_request,
+ MSG_CHANNEL_EOF: Channel._handle_eof,
+ MSG_CHANNEL_CLOSE: Channel._handle_close,
+ }
diff --git a/paramiko/util.py b/paramiko/util.py
new file mode 100644
index 0000000..abab825
--- /dev/null
+++ b/paramiko/util.py
@@ -0,0 +1,357 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Useful functions used by the rest of paramiko.
+"""
+
+from __future__ import generators
+
+import fnmatch
+import sys
+import struct
+import traceback
+import threading
+
+from paramiko.common import *
+
+
+# Change by RogerB - python < 2.3 doesn't have enumerate so we implement it
+if sys.version_info < (2,3):
+ class enumerate:
+ def __init__ (self, sequence):
+ self.sequence = sequence
+ def __iter__ (self):
+ count = 0
+ for item in self.sequence:
+ yield (count, item)
+ count += 1
+
+
+def inflate_long(s, always_positive=False):
+ "turns a normalized byte string into a long-int (adapted from Crypto.Util.number)"
+ out = 0L
+ negative = 0
+ if not always_positive and (len(s) > 0) and (ord(s[0]) >= 0x80):
+ negative = 1
+ if len(s) % 4:
+ filler = '\x00'
+ if negative:
+ filler = '\xff'
+ s = filler * (4 - len(s) % 4) + s
+ for i in range(0, len(s), 4):
+ out = (out << 32) + struct.unpack('>I', s[i:i+4])[0]
+ if negative:
+ out -= (1L << (8 * len(s)))
+ return out
+
+def deflate_long(n, add_sign_padding=True):
+ "turns a long-int into a normalized byte string (adapted from Crypto.Util.number)"
+ # after much testing, this algorithm was deemed to be the fastest
+ s = ''
+ n = long(n)
+ while (n != 0) and (n != -1):
+ s = struct.pack('>I', n & 0xffffffffL) + s
+ n = n >> 32
+ # strip off leading zeros, FFs
+ for i in enumerate(s):
+ if (n == 0) and (i[1] != '\000'):
+ break
+ if (n == -1) and (i[1] != '\xff'):
+ break
+ else:
+ # degenerate case, n was either 0 or -1
+ i = (0,)
+ if n == 0:
+ s = '\000'
+ else:
+ s = '\xff'
+ s = s[i[0]:]
+ if add_sign_padding:
+ if (n == 0) and (ord(s[0]) >= 0x80):
+ s = '\x00' + s
+ if (n == -1) and (ord(s[0]) < 0x80):
+ s = '\xff' + s
+ return s
+
+def format_binary_weird(data):
+ out = ''
+ for i in enumerate(data):
+ out += '%02X' % ord(i[1])
+ if i[0] % 2:
+ out += ' '
+ if i[0] % 16 == 15:
+ out += '\n'
+ return out
+
+def format_binary(data, prefix=''):
+ x = 0
+ out = []
+ while len(data) > x + 16:
+ out.append(format_binary_line(data[x:x+16]))
+ x += 16
+ if x < len(data):
+ out.append(format_binary_line(data[x:]))
+ return [prefix + x for x in out]
+
+def format_binary_line(data):
+ left = ' '.join(['%02X' % ord(c) for c in data])
+ right = ''.join([('.%c..' % c)[(ord(c)+63)//95] for c in data])
+ return '%-50s %s' % (left, right)
+
+def hexify(s):
+ "turn a string into a hex sequence"
+ return ''.join(['%02X' % ord(c) for c in s])
+
+def unhexify(s):
+ "turn a hex sequence back into a string"
+ return ''.join([chr(int(s[i:i+2], 16)) for i in range(0, len(s), 2)])
+
+def safe_string(s):
+ out = ''
+ for c in s:
+ if (ord(c) >= 32) and (ord(c) <= 127):
+ out += c
+ else:
+ out += '%%%02X' % ord(c)
+ return out
+
+# ''.join([['%%%02X' % ord(c), c][(ord(c) >= 32) and (ord(c) <= 127)] for c in s])
+
+def bit_length(n):
+ norm = deflate_long(n, 0)
+ hbyte = ord(norm[0])
+ bitlen = len(norm) * 8
+ while not (hbyte & 0x80):
+ hbyte <<= 1
+ bitlen -= 1
+ return bitlen
+
+def tb_strings():
+ return ''.join(traceback.format_exception(*sys.exc_info())).split('\n')
+
+def generate_key_bytes(hashclass, salt, key, nbytes):
+ """
+ Given a password, passphrase, or other human-source key, scramble it
+ through a secure hash into some keyworthy bytes. This specific algorithm
+ is used for encrypting/decrypting private key files.
+
+ @param hashclass: class from L{Crypto.Hash} that can be used as a secure
+ hashing function (like C{MD5} or C{SHA}).
+ @type hashclass: L{Crypto.Hash}
+ @param salt: data to salt the hash with.
+ @type salt: string
+ @param key: human-entered password or passphrase.
+ @type key: string
+ @param nbytes: number of bytes to generate.
+ @type nbytes: int
+ @return: key data
+ @rtype: string
+ """
+ keydata = ''
+ digest = ''
+ if len(salt) > 8:
+ salt = salt[:8]
+ while nbytes > 0:
+ hash = hashclass.new()
+ if len(digest) > 0:
+ hash.update(digest)
+ hash.update(key)
+ hash.update(salt)
+ digest = hash.digest()
+ size = min(nbytes, len(digest))
+ keydata += digest[:size]
+ nbytes -= size
+ return keydata
+
+def load_host_keys(filename):
+ """
+ Read a file of known SSH host keys, in the format used by openssh, and
+ return a compound dict of C{hostname -> keytype ->} L{PKey <paramiko.pkey.PKey>}.
+ The hostname may be an IP address or DNS name. The keytype will be either
+ C{"ssh-rsa"} or C{"ssh-dss"}.
+
+ This type of file unfortunately doesn't exist on Windows, but on posix,
+ it will usually be stored in C{os.path.expanduser("~/.ssh/known_hosts")}.
+
+ @param filename: name of the file to read host keys from
+ @type filename: str
+ @return: dict of host keys, indexed by hostname and then keytype
+ @rtype: dict(hostname, dict(keytype, L{PKey <paramiko.pkey.PKey>}))
+ """
+ import base64
+ from rsakey import RSAKey
+ from dsskey import DSSKey
+
+ keys = {}
+ f = file(filename, 'r')
+ for line in f:
+ line = line.strip()
+ if (len(line) == 0) or (line[0] == '#'):
+ continue
+ keylist = line.split(' ')
+ if len(keylist) != 3:
+ continue
+ hostlist, keytype, key = keylist
+ hosts = hostlist.split(',')
+ for host in hosts:
+ if not keys.has_key(host):
+ keys[host] = {}
+ if keytype == 'ssh-rsa':
+ keys[host][keytype] = RSAKey(data=base64.decodestring(key))
+ elif keytype == 'ssh-dss':
+ keys[host][keytype] = DSSKey(data=base64.decodestring(key))
+ f.close()
+ return keys
+
+def parse_ssh_config(file_obj):
+ """
+ Parse a config file of the format used by OpenSSH, and return an object
+ that can be used to make queries to L{lookup_ssh_host_config}. The
+ format is described in OpenSSH's C{ssh_config} man page. This method is
+ provided primarily as a convenience to posix users (since the OpenSSH
+ format is a de-facto standard on posix) but should work fine on Windows
+ too.
+
+ The return value is currently a list of dictionaries, each containing
+ host-specific configuration, but this is considered an implementation
+ detail and may be subject to change in later versions.
+
+ @param file_obj: a file-like object to read the config file from
+ @type file_obj: file
+ @return: opaque configuration object
+ @rtype: object
+ """
+ ret = []
+ config = { 'host': '*' }
+ ret.append(config)
+
+ for line in file_obj:
+ line = line.rstrip('\n').lstrip()
+ if (line == '') or (line[0] == '#'):
+ continue
+ if '=' in line:
+ key, value = line.split('=', 1)
+ key = key.strip().lower()
+ else:
+ # find first whitespace, and split there
+ i = 0
+ while (i < len(line)) and not line[i].isspace():
+ i += 1
+ if i == len(line):
+ raise Exception('Unparsable line: %r' % line)
+ key = line[:i].lower()
+ value = line[i:].lstrip()
+
+ if key == 'host':
+ # do we have a pre-existing host config to append to?
+ matches = [c for c in ret if c['host'] == value]
+ if len(matches) > 0:
+ config = matches[0]
+ else:
+ config = { 'host': value }
+ ret.append(config)
+ else:
+ config[key] = value
+
+ return ret
+
+def lookup_ssh_host_config(hostname, config):
+ """
+ Return a dict of config options for a given hostname. The C{config} object
+ must come from L{parse_ssh_config}.
+
+ The host-matching rules of OpenSSH's C{ssh_config} man page are used, which
+ means that all configuration options from matching host specifications are
+ merged, with more specific hostmasks taking precedence. In other words, if
+ C{"Port"} is set under C{"Host *"} and also C{"Host *.example.com"}, and
+ the lookup is for C{"ssh.example.com"}, then the port entry for
+ C{"Host *.example.com"} will win out.
+
+ The keys in the returned dict are all normalized to lowercase (look for
+ C{"port"}, not C{"Port"}. No other processing is done to the keys or
+ values.
+
+ @param hostname: the hostname to lookup
+ @type hostname: str
+ @param config: the config object to search
+ @type config: object
+ """
+ matches = [x for x in config if fnmatch.fnmatch(hostname, x['host'])]
+ # sort in order of shortest match (usually '*') to longest
+ matches.sort(key=lambda x: len(x['host']))
+ ret = {}
+ for m in matches:
+ ret.update(m)
+ del ret['host']
+ return ret
+
+def mod_inverse(x, m):
+ # it's crazy how small python can make this function.
+ u1, u2, u3 = 1, 0, m
+ v1, v2, v3 = 0, 1, x
+
+ while v3 > 0:
+ q = u3 // v3
+ u1, v1 = v1, u1 - v1 * q
+ u2, v2 = v2, u2 - v2 * q
+ u3, v3 = v3, u3 - v3 * q
+ if u2 < 0:
+ u2 += m
+ return u2
+
+_g_thread_ids = {}
+_g_thread_counter = 0
+_g_thread_lock = threading.Lock()
+def get_thread_id():
+ global _g_thread_ids, _g_thread_counter, _g_thread_lock
+ tid = id(threading.currentThread())
+ try:
+ return _g_thread_ids[tid]
+ except KeyError:
+ _g_thread_lock.acquire()
+ try:
+ _g_thread_counter += 1
+ ret = _g_thread_ids[tid] = _g_thread_counter
+ finally:
+ _g_thread_lock.release()
+ return ret
+
+def log_to_file(filename, level=DEBUG):
+ "send paramiko logs to a logfile, if they're not already going somewhere"
+ l = logging.getLogger("paramiko")
+ if len(l.handlers) > 0:
+ return
+ l.setLevel(level)
+ f = open(filename, 'w')
+ lh = logging.StreamHandler(f)
+ lh.setFormatter(logging.Formatter('%(levelname)-.3s [%(asctime)s.%(msecs)03d] thr=%(_threadid)-3d %(name)s: %(message)s',
+ '%Y%m%d-%H:%M:%S'))
+ l.addHandler(lh)
+
+# make only one filter object, so it doesn't get applied more than once
+class PFilter (object):
+ def filter(self, record):
+ record._threadid = get_thread_id()
+ return True
+_pfilter = PFilter()
+
+def get_logger(name):
+ l = logging.getLogger(name)
+ l.addFilter(_pfilter)
+ return l
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..ce7d047
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,49 @@
+from distutils.core import setup
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+
+longdesc = '''
+This is a library for making SSH2 connections (client or server).
+Emphasis is on using SSH2 as an alternative to SSL for making secure
+connections between python scripts. All major ciphers and hash methods
+are supported. SFTP client and server mode are both supported too.
+
+Required packages:
+ pyCrypt
+'''
+
+setup(name = "paramiko",
+ version = "1.5.2",
+ description = "SSH2 protocol library",
+ author = "Robey Pointer",
+ author_email = "robey@lag.net",
+ url = "http://www.lag.net/paramiko/",
+ packages = [ 'paramiko' ],
+ download_url = 'http://www.lag.net/paramiko/download/paramiko-1.5.2.zip',
+ license = 'LGPL',
+ platforms = 'Posix; MacOS X; Windows',
+ classifiers = [ 'Development Status :: 5 - Production/Stable',
+ 'Intended Audience :: Developers',
+ 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
+ 'Operating System :: OS Independent',
+ 'Topic :: Internet',
+ 'Topic :: Security :: Cryptography' ],
+ long_description = longdesc,
+ )
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..17b6294
--- /dev/null
+++ b/test.py
@@ -0,0 +1,103 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+do the unit tests!
+"""
+
+import sys, os, unittest
+from optparse import OptionParser
+import paramiko
+
+sys.path.append('tests/')
+
+from test_message import MessageTest
+from test_file import BufferedFileTest
+from test_util import UtilTest
+from test_pkey import KeyTest
+from test_kex import KexTest
+from test_packetizer import PacketizerTest
+from test_transport import TransportTest
+from test_sftp import SFTPTest
+
+default_host = 'localhost'
+default_user = os.environ.get('USER', 'nobody')
+default_keyfile = os.path.join(os.environ.get('HOME', '/'), '.ssh/id_rsa')
+default_passwd = None
+
+parser = OptionParser('usage: %prog [options]')
+parser.add_option('--verbose', action='store_true', dest='verbose', default=False,
+ help='verbose display (one line per test)')
+parser.add_option('--no-pkey', action='store_false', dest='use_pkey', default=True,
+ help='skip RSA/DSS private key tests (which can take a while)')
+parser.add_option('--no-transport', action='store_false', dest='use_transport', default=True,
+ help='skip transport tests (which can take a while)')
+parser.add_option('--no-sftp', action='store_false', dest='use_sftp', default=True,
+ help='skip SFTP client/server tests, which can be slow')
+parser.add_option('--no-big-file', action='store_false', dest='use_big_file', default=True,
+ help='skip big file SFTP tests, which are slow as molasses')
+parser.add_option('-R', action='store_false', dest='use_loopback_sftp', default=True,
+ help='perform SFTP tests against a remote server (by default, SFTP tests ' +
+ 'are done through a loopback socket)')
+parser.add_option('-H', '--sftp-host', dest='hostname', type='string', default=default_host,
+ metavar='<host>',
+ help='[with -R] host for remote sftp tests (default: %s)' % default_host)
+parser.add_option('-U', '--sftp-user', dest='username', type='string', default=default_user,
+ metavar='<username>',
+ help='[with -R] username for remote sftp tests (default: %s)' % default_user)
+parser.add_option('-K', '--sftp-key', dest='keyfile', type='string', default=default_keyfile,
+ metavar='<keyfile>',
+ help='[with -R] location of private key for remote sftp tests (default: %s)' %
+ default_keyfile)
+parser.add_option('-P', '--sftp-passwd', dest='password', type='string', default=default_passwd,
+ metavar='<password>',
+ help='[with -R] (optional) password to unlock the private key for remote sftp tests')
+
+options, args = parser.parse_args()
+if len(args) > 0:
+ parser.error('unknown argument(s)')
+
+# setup logging
+paramiko.util.log_to_file('test.log')
+
+if options.use_sftp:
+ if options.use_loopback_sftp:
+ SFTPTest.init_loopback()
+ else:
+ SFTPTest.init(options.hostname, options.username, options.keyfile, options.password)
+ if not options.use_big_file:
+ SFTPTest.set_big_file_test(False)
+
+suite = unittest.TestSuite()
+suite.addTest(unittest.makeSuite(MessageTest))
+suite.addTest(unittest.makeSuite(BufferedFileTest))
+suite.addTest(unittest.makeSuite(UtilTest))
+if options.use_pkey:
+ suite.addTest(unittest.makeSuite(KeyTest))
+suite.addTest(unittest.makeSuite(KexTest))
+suite.addTest(unittest.makeSuite(PacketizerTest))
+if options.use_transport:
+ suite.addTest(unittest.makeSuite(TransportTest))
+if options.use_sftp:
+ suite.addTest(unittest.makeSuite(SFTPTest))
+verbosity = 1
+if options.verbose:
+ verbosity = 2
+unittest.TextTestRunner(verbosity=verbosity).run(suite)
diff --git a/tests/loop.py b/tests/loop.py
new file mode 100644
index 0000000..ad5f7ca
--- /dev/null
+++ b/tests/loop.py
@@ -0,0 +1,104 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+...
+"""
+
+import threading, socket
+
+
+class LoopSocket (object):
+ """
+ A LoopSocket looks like a normal socket, but all data written to it is
+ delivered on the read-end of another LoopSocket, and vice versa. It's
+ like a software "socketpair".
+ """
+
+ def __init__(self):
+ self.__in_buffer = ''
+ self.__lock = threading.Lock()
+ self.__cv = threading.Condition(self.__lock)
+ self.__timeout = None
+ self.__mate = None
+
+ def close(self):
+ self.__unlink()
+ try:
+ self.__lock.acquire()
+ self.__in_buffer = ''
+ finally:
+ self.__lock.release()
+
+ def send(self, data):
+ if self.__mate is None:
+ # EOF
+ raise EOFError()
+ self.__mate.__feed(data)
+ return len(data)
+
+ def recv(self, n):
+ self.__lock.acquire()
+ try:
+ if self.__mate is None:
+ # EOF
+ return ''
+ if len(self.__in_buffer) == 0:
+ self.__cv.wait(self.__timeout)
+ if len(self.__in_buffer) == 0:
+ raise socket.timeout
+ if n < self.__in_buffer:
+ out = self.__in_buffer[:n]
+ self.__in_buffer = self.__in_buffer[n:]
+ else:
+ out = self.__in_buffer
+ self.__in_buffer = ''
+ return out
+ finally:
+ self.__lock.release()
+
+ def settimeout(self, n):
+ self.__timeout = n
+
+ def link(self, other):
+ self.__mate = other
+ self.__mate.__mate = self
+
+ def __feed(self, data):
+ self.__lock.acquire()
+ try:
+ self.__in_buffer += data
+ self.__cv.notifyAll()
+ finally:
+ self.__lock.release()
+
+ def __unlink(self):
+ m = None
+ self.__lock.acquire()
+ try:
+ if self.__mate is not None:
+ m = self.__mate
+ self.__mate = None
+ finally:
+ self.__lock.release()
+ if m is not None:
+ m.__unlink()
+
+
diff --git a/tests/stub_sftp.py b/tests/stub_sftp.py
new file mode 100644
index 0000000..4b8b9c3
--- /dev/null
+++ b/tests/stub_sftp.py
@@ -0,0 +1,192 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+A stub SFTP server for loopback SFTP testing.
+"""
+
+import os
+from paramiko import ServerInterface, SFTPServerInterface, SFTPServer, SFTPAttributes, \
+ SFTPHandle, SFTP_OK, AUTH_SUCCESSFUL, OPEN_SUCCEEDED
+
+
+class StubServer (ServerInterface):
+ def check_auth_password(self, username, password):
+ # all are allowed
+ return AUTH_SUCCESSFUL
+
+ def check_channel_request(self, kind, chanid):
+ return OPEN_SUCCEEDED
+
+
+class StubSFTPHandle (SFTPHandle):
+ def stat(self):
+ try:
+ return SFTPAttributes.from_stat(os.fstat(self.readfile.fileno()))
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+
+ def chattr(self, attr):
+ # python doesn't have equivalents to fchown or fchmod, so we have to
+ # use the stored filename
+ try:
+ SFTPServer.set_file_attr(self.filename, attr)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+
+
+class StubSFTPServer (SFTPServerInterface):
+ # assume current folder is a fine root
+ # (the tests always create and eventualy delete a subfolder, so there shouldn't be any mess)
+ ROOT = os.getcwd()
+
+ def _realpath(self, path):
+ return self.ROOT + self.canonicalize(path)
+
+ def list_folder(self, path):
+ path = self._realpath(path)
+ try:
+ out = [ ]
+ flist = os.listdir(path)
+ for fname in flist:
+ attr = SFTPAttributes.from_stat(os.stat(os.path.join(path, fname)))
+ attr.filename = fname
+ out.append(attr)
+ return out
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+
+ def stat(self, path):
+ path = self._realpath(path)
+ try:
+ return SFTPAttributes.from_stat(os.stat(path))
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+
+ def lstat(self, path):
+ path = self._realpath(path)
+ try:
+ return SFTPAttributes.from_stat(os.lstat(path))
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+
+ def open(self, path, flags, attr):
+ path = self._realpath(path)
+ try:
+ fd = os.open(path, flags)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+ if (flags & os.O_CREAT) and (attr is not None):
+ SFTPServer.set_file_attr(path, attr)
+ if flags & os.O_WRONLY:
+ fstr = 'w'
+ elif flags & os.O_RDWR:
+ fstr = 'r+'
+ else:
+ # O_RDONLY (== 0)
+ fstr = 'r'
+ try:
+ f = os.fdopen(fd, fstr)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+ fobj = StubSFTPHandle()
+ fobj.filename = path
+ fobj.readfile = f
+ fobj.writefile = f
+ return fobj
+
+ def remove(self, path):
+ path = self._realpath(path)
+ try:
+ os.remove(path)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+ return SFTP_OK
+
+ def rename(self, oldpath, newpath):
+ oldpath = self._realpath(oldpath)
+ newpath = self._realpath(newpath)
+ try:
+ os.rename(oldpath, newpath)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+ return SFTP_OK
+
+ def mkdir(self, path, attr):
+ path = self._realpath(path)
+ try:
+ os.mkdir(path)
+ if attr is not None:
+ SFTPServer.set_file_attr(path, attr)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+ return SFTP_OK
+
+ def rmdir(self, path):
+ path = self._realpath(path)
+ try:
+ os.rmdir(path)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+ return SFTP_OK
+
+ def chattr(self, path, attr):
+ path = self._realpath(path)
+ try:
+ SFTPServer.set_file_attr(path, attr)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+ return SFTP_OK
+
+ def symlink(self, target_path, path):
+ path = self._realpath(path)
+ if (len(target_path) > 0) and (target_path[0] == '/'):
+ # absolute symlink
+ target_path = os.path.join(self.ROOT, target_path[1:])
+ if target_path[:2] == '//':
+ # bug in os.path.join
+ target_path = target_path[1:]
+ else:
+ # compute relative to path
+ abspath = os.path.join(os.path.dirname(path), target_path)
+ if abspath[:len(self.ROOT)] != self.ROOT:
+ # this symlink isn't going to work anyway -- just break it immediately
+ target_path = '<error>'
+ try:
+ os.symlink(target_path, path)
+ except:
+ return SFTPServer.convert_errno(e.errno)
+ return SFTP_OK
+
+ def readlink(self, path):
+ path = self._realpath(path)
+ try:
+ symlink = os.readlink(path)
+ except OSError, e:
+ return SFTPServer.convert_errno(e.errno)
+ # if it's absolute, remove the root
+ if os.path.isabs(symlink):
+ if symlink[:len(self.ROOT)] == self.ROOT:
+ symlink = symlink[len(self.ROOT):]
+ if (len(symlink) == 0) or (symlink[0] != '/'):
+ symlink = '/' + symlink
+ else:
+ symlink = '<error>'
+ return symlink
diff --git a/tests/test_dss.key b/tests/test_dss.key
new file mode 100644
index 0000000..e10807f
--- /dev/null
+++ b/tests/test_dss.key
@@ -0,0 +1,12 @@
+-----BEGIN DSA PRIVATE KEY-----
+MIIBuwIBAAKBgQDngaYDZ30c6/7cJgEEbtl8FgKdwhba1Z7oOrOn4MI/6C42G1bY
+wMuqZf4dBCglsdq39SHrcjbE8Vq54gPSOh3g4+uV9Rcg5IOoPLbwp2jQfF6f1FIb
+sx7hrDCIqUcQccPSxetPBKmXI9RN8rZLaFuQeTnI65BKM98Ruwvq6SI2LwIVAPDP
+hSeawaJI27mKqOfe5PPBSmyHAoGBAJMXxXmPD9sGaQ419DIpmZecJKBUAy9uXD8x
+gbgeDpwfDaFJP8owByCKREocPFfi86LjCuQkyUKOfjYMN6iHIf1oEZjB8uJAatUr
+FzI0ArXtUqOhwTLwTyFuUojE5own2WYsOAGByvgfyWjsGhvckYNhI4ODpNdPlxQ8
+ZamaPGPsAoGARmR7CCPjodxASvRbIyzaVpZoJ/Z6x7dAumV+ysrV1BVYd0lYukmn
+jO1kKBWApqpH1ve9XDQYN8zgxM4b16L21kpoWQnZtXrY3GZ4/it9kUgyB7+NwacI
+BlXa8cMDL7Q/69o0d54U0X/NeX5QxuYR6OMJlrkQB7oiW/P/1mwjQgECFGI9QPSc
+h9pT9XHqn+1rZ4bK+QGA
+-----END DSA PRIVATE KEY-----
diff --git a/tests/test_dss_password.key b/tests/test_dss_password.key
new file mode 100644
index 0000000..e2a9bc5
--- /dev/null
+++ b/tests/test_dss_password.key
@@ -0,0 +1,15 @@
+-----BEGIN DSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,78DAEB836ED0A646
+
+ldWkq9OMlXqWmjIqppNnmNPIUj5uVT12LkBosTApTbibTme3kIJb1uDeG2BShVfY
++vDOTUE9koGPDLsxW1t5At+EVyIDK8aIO0uHteXM5AbBX20LLUWRbRVqZhsMxqQh
+3H3XlHiN+QhaWcb4fFuu18a8SkimTFpDnZuffoCDl/zh/B7XieARTLA805K/ZgVB
+BBwflkR2BE053XHrJAIx9BEUlLP76Fo18rvjLZOSeu3s+VnnhqUb5FCt5h50a46u
+YXQBbo2r9Zo1ilGMNEXJO0gk5hwGVmTySz53NkPA5HmWt8NIzv5jQHMDy7N+ZykF
+uwpP1R5M/ZIFY4Y5h/lvn6IJjQ7VySRPIbpN8o2YJv2OD1Ja80n3tU8Mg77o3o4d
+NwKm7cCjlq+FuIBdOsSgsB8FPQRUhW+jpFDxmWN64DM2cEg6RUdptby7WmMp0HwK
+1qyEfxHjLMuDVlD7lASIDBrRlUjPtXEH1DzIYQuYaRZaixFoZ7EY+X73TwmrKFEU
+US9ZnQZtRtroRqGwR4fz4wQQsjTl/AmOijlBmi29taJccJsT/THrLQ5plOEd8OMv
+9FsaPJXBU85gaRKo3JZtrw==
+-----END DSA PRIVATE KEY-----
diff --git a/tests/test_file.py b/tests/test_file.py
new file mode 100644
index 0000000..250821c
--- /dev/null
+++ b/tests/test_file.py
@@ -0,0 +1,153 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Some unit tests for the BufferedFile abstraction.
+"""
+
+import unittest
+from paramiko.file import BufferedFile
+
+
+class LoopbackFile (BufferedFile):
+ """
+ BufferedFile object that you can write data into, and then read it back.
+ """
+ def __init__(self, mode='r', bufsize=-1):
+ BufferedFile.__init__(self)
+ self._set_mode(mode, bufsize)
+ self.buffer = ''
+
+ def _read(self, size):
+ if len(self.buffer) == 0:
+ return None
+ if size > len(self.buffer):
+ size = len(self.buffer)
+ data = self.buffer[:size]
+ self.buffer = self.buffer[size:]
+ return data
+
+ def _write(self, data):
+ self.buffer += data
+ return len(data)
+
+
+class BufferedFileTest (unittest.TestCase):
+
+ def test_1_simple(self):
+ f = LoopbackFile('r')
+ try:
+ f.write('hi')
+ self.assert_(False, 'no exception on write to read-only file')
+ except:
+ pass
+ f.close()
+
+ f = LoopbackFile('w')
+ try:
+ f.read(1)
+ self.assert_(False, 'no exception to read from write-only file')
+ except:
+ pass
+ f.close()
+
+ def test_2_readline(self):
+ f = LoopbackFile('r+U')
+ f.write('First line.\nSecond line.\r\nThird line.\nFinal line non-terminated.')
+ self.assertEqual(f.readline(), 'First line.\n')
+ # universal newline mode should convert this linefeed:
+ self.assertEqual(f.readline(), 'Second line.\n')
+ # truncated line:
+ self.assertEqual(f.readline(7), 'Third l')
+ self.assertEqual(f.readline(), 'ine.\n')
+ self.assertEqual(f.readline(), 'Final line non-terminated.')
+ self.assertEqual(f.readline(), '')
+ f.close()
+ try:
+ f.readline()
+ self.assert_(False, 'no exception on readline of closed file')
+ except IOError:
+ pass
+ self.assert_('\n' in f.newlines)
+ self.assert_('\r\n' in f.newlines)
+ self.assert_('\r' not in f.newlines)
+
+ def test_3_lf(self):
+ """
+ try to trick the linefeed detector.
+ """
+ f = LoopbackFile('r+U')
+ f.write('First line.\r')
+ self.assertEqual(f.readline(), 'First line.\n')
+ f.write('\nSecond.\r\n')
+ self.assertEqual(f.readline(), 'Second.\n')
+ f.close()
+ self.assertEqual(f.newlines, '\r\n')
+
+ def test_4_write(self):
+ """
+ verify that write buffering is on.
+ """
+ f = LoopbackFile('r+', 1)
+ f.write('Complete line.\nIncomplete line.')
+ self.assertEqual(f.readline(), 'Complete line.\n')
+ self.assertEqual(f.readline(), '')
+ f.write('..\n')
+ self.assertEqual(f.readline(), 'Incomplete line...\n')
+ f.close()
+
+ def test_5_flush(self):
+ """
+ verify that flush will force a write.
+ """
+ f = LoopbackFile('r+', 512)
+ f.write('Not\nquite\n512 bytes.\n')
+ self.assertEqual(f.read(1), '')
+ f.flush()
+ self.assertEqual(f.read(5), 'Not\nq')
+ self.assertEqual(f.read(10), 'uite\n512 b')
+ self.assertEqual(f.read(9), 'ytes.\n')
+ self.assertEqual(f.read(3), '')
+ f.close()
+
+ def test_6_buffering(self):
+ """
+ verify that flushing happens automatically on buffer crossing.
+ """
+ f = LoopbackFile('r+', 16)
+ f.write('Too small.')
+ self.assertEqual(f.read(4), '')
+ f.write(' ')
+ self.assertEqual(f.read(4), '')
+ f.write('Enough.')
+ self.assertEqual(f.read(20), 'Too small. Enough.')
+ f.close()
+
+ def test_7_read_all(self):
+ """
+ verify that read(-1) returns everything left in the file.
+ """
+ f = LoopbackFile('r+', 16)
+ f.write('The first thing you need to do is open your eyes. ')
+ f.write('Then, you need to close them again.\n')
+ s = f.read(-1)
+ self.assertEqual(s, 'The first thing you need to do is open your eyes. Then, you ' +
+ 'need to close them again.\n')
+ f.close()
diff --git a/tests/test_kex.py b/tests/test_kex.py
new file mode 100644
index 0000000..2680853
--- /dev/null
+++ b/tests/test_kex.py
@@ -0,0 +1,183 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Some unit tests for the key exchange protocols.
+"""
+
+import unittest
+import paramiko.util
+from paramiko.kex_group1 import KexGroup1
+from paramiko.kex_gex import KexGex
+from paramiko import Message
+
+
+class FakeRandpool (object):
+ def stir(self):
+ pass
+ def get_bytes(self, n):
+ return chr(0xcc) * n
+
+class FakeKey (object):
+ def __str__(self):
+ return 'fake-key'
+ def sign_ssh_data(self, randpool, H):
+ return 'fake-sig'
+
+class FakeModulusPack (object):
+ P = 0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFFL
+ G = 2
+ def get_modulus(self, min, ask, max):
+ return self.G, self.P
+
+class FakeTransport (object):
+ randpool = FakeRandpool()
+ local_version = 'SSH-2.0-paramiko_1.0'
+ remote_version = 'SSH-2.0-lame'
+ local_kex_init = 'local-kex-init'
+ remote_kex_init = 'remote-kex-init'
+
+ def _send_message(self, m):
+ self._message = m
+ def _expect_packet(self, t):
+ self._expect = t
+ def _set_K_H(self, K, H):
+ self._K = K
+ self._H = H
+ def _verify_key(self, host_key, sig):
+ self._verify = (host_key, sig)
+ def _activate_outbound(self):
+ self._activated = True
+ def _log(self, level, s):
+ pass
+ def get_server_key(self):
+ return FakeKey()
+ def _get_modulus_pack(self):
+ return FakeModulusPack()
+
+
+class KexTest (unittest.TestCase):
+
+ K = 14730343317708716439807310032871972459448364195094179797249681733965528989482751523943515690110179031004049109375612685505881911274101441415545039654102474376472240501616988799699744135291070488314748284283496055223852115360852283821334858541043710301057312858051901453919067023103730011648890038847384890504L
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def test_1_group1_client(self):
+ transport = FakeTransport()
+ transport.server_mode = False
+ kex = KexGroup1(transport)
+ kex.start_kex()
+ x = '1E000000807E2DDB1743F3487D6545F04F1C8476092FB912B013626AB5BCEB764257D88BBA64243B9F348DF7B41B8C814A995E00299913503456983FFB9178D3CD79EB6D55522418A8ABF65375872E55938AB99A84A0B5FC8A1ECC66A7C3766E7E0F80B7CE2C9225FC2DD683F4764244B72963BBB383F529DCF0C5D17740B8A2ADBE9208D4'
+ self.assertEquals(x, paramiko.util.hexify(str(transport._message)))
+ self.assertEquals(paramiko.kex_group1._MSG_KEXDH_REPLY, transport._expect)
+
+ # fake "reply"
+ msg = Message()
+ msg.add_string('fake-host-key')
+ msg.add_mpint(69)
+ msg.add_string('fake-sig')
+ msg.rewind()
+ kex.parse_next(paramiko.kex_group1._MSG_KEXDH_REPLY, msg)
+ H = '03079780F3D3AD0B3C6DB30C8D21685F367A86D2'
+ self.assertEquals(self.K, transport._K)
+ self.assertEquals(H, paramiko.util.hexify(transport._H))
+ self.assertEquals(('fake-host-key', 'fake-sig'), transport._verify)
+ self.assert_(transport._activated)
+
+ def test_2_group1_server(self):
+ transport = FakeTransport()
+ transport.server_mode = True
+ kex = KexGroup1(transport)
+ kex.start_kex()
+ self.assertEquals(paramiko.kex_group1._MSG_KEXDH_INIT, transport._expect)
+
+ msg = Message()
+ msg.add_mpint(69)
+ msg.rewind()
+ kex.parse_next(paramiko.kex_group1._MSG_KEXDH_INIT, msg)
+ H = 'B16BF34DD10945EDE84E9C1EF24A14BFDC843389'
+ x = '1F0000000866616B652D6B6579000000807E2DDB1743F3487D6545F04F1C8476092FB912B013626AB5BCEB764257D88BBA64243B9F348DF7B41B8C814A995E00299913503456983FFB9178D3CD79EB6D55522418A8ABF65375872E55938AB99A84A0B5FC8A1ECC66A7C3766E7E0F80B7CE2C9225FC2DD683F4764244B72963BBB383F529DCF0C5D17740B8A2ADBE9208D40000000866616B652D736967'
+ self.assertEquals(self.K, transport._K)
+ self.assertEquals(H, paramiko.util.hexify(transport._H))
+ self.assertEquals(x, paramiko.util.hexify(str(transport._message)))
+ self.assert_(transport._activated)
+
+ def test_3_gex_client(self):
+ transport = FakeTransport()
+ transport.server_mode = False
+ kex = KexGex(transport)
+ kex.start_kex()
+ x = '22000004000000080000002000'
+ self.assertEquals(x, paramiko.util.hexify(str(transport._message)))
+ self.assertEquals(paramiko.kex_gex._MSG_KEXDH_GEX_GROUP, transport._expect)
+
+ msg = Message()
+ msg.add_mpint(FakeModulusPack.P)
+ msg.add_mpint(FakeModulusPack.G)
+ msg.rewind()
+ kex.parse_next(paramiko.kex_gex._MSG_KEXDH_GEX_GROUP, msg)
+ x = '20000000807E2DDB1743F3487D6545F04F1C8476092FB912B013626AB5BCEB764257D88BBA64243B9F348DF7B41B8C814A995E00299913503456983FFB9178D3CD79EB6D55522418A8ABF65375872E55938AB99A84A0B5FC8A1ECC66A7C3766E7E0F80B7CE2C9225FC2DD683F4764244B72963BBB383F529DCF0C5D17740B8A2ADBE9208D4'
+ self.assertEquals(x, paramiko.util.hexify(str(transport._message)))
+ self.assertEquals(paramiko.kex_gex._MSG_KEXDH_GEX_REPLY, transport._expect)
+
+ msg = Message()
+ msg.add_string('fake-host-key')
+ msg.add_mpint(69)
+ msg.add_string('fake-sig')
+ msg.rewind()
+ kex.parse_next(paramiko.kex_gex._MSG_KEXDH_GEX_REPLY, msg)
+ H = 'A265563F2FA87F1A89BF007EE90D58BE2E4A4BD0'
+ self.assertEquals(self.K, transport._K)
+ self.assertEquals(H, paramiko.util.hexify(transport._H))
+ self.assertEquals(('fake-host-key', 'fake-sig'), transport._verify)
+ self.assert_(transport._activated)
+
+ def test_4_gex_server(self):
+ transport = FakeTransport()
+ transport.server_mode = True
+ kex = KexGex(transport)
+ kex.start_kex()
+ self.assertEquals(paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST, transport._expect)
+
+ msg = Message()
+ msg.add_int(1024)
+ msg.add_int(2048)
+ msg.add_int(4096)
+ msg.rewind()
+ kex.parse_next(paramiko.kex_gex._MSG_KEXDH_GEX_REQUEST, msg)
+ x = '1F0000008100FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF0000000102'
+ self.assertEquals(x, paramiko.util.hexify(str(transport._message)))
+ self.assertEquals(paramiko.kex_gex._MSG_KEXDH_GEX_INIT, transport._expect)
+
+ msg = Message()
+ msg.add_mpint(12345)
+ msg.rewind()
+ kex.parse_next(paramiko.kex_gex._MSG_KEXDH_GEX_INIT, msg)
+ K = 67592995013596137876033460028393339951879041140378510871612128162185209509220726296697886624612526735888348020498716482757677848959420073720160491114319163078862905400020959196386947926388406687288901564192071077389283980347784184487280885335302632305026248574716290537036069329724382811853044654824945750581L
+ H = 'CE754197C21BF3452863B4F44D0B3951F12516EF'
+ x = '210000000866616B652D6B6579000000807E2DDB1743F3487D6545F04F1C8476092FB912B013626AB5BCEB764257D88BBA64243B9F348DF7B41B8C814A995E00299913503456983FFB9178D3CD79EB6D55522418A8ABF65375872E55938AB99A84A0B5FC8A1ECC66A7C3766E7E0F80B7CE2C9225FC2DD683F4764244B72963BBB383F529DCF0C5D17740B8A2ADBE9208D40000000866616B652D736967'
+ self.assertEquals(K, transport._K)
+ self.assertEquals(H, paramiko.util.hexify(transport._H))
+ self.assertEquals(x, paramiko.util.hexify(str(transport._message)))
+ self.assert_(transport._activated)
diff --git a/tests/test_message.py b/tests/test_message.py
new file mode 100644
index 0000000..441e3ce
--- /dev/null
+++ b/tests/test_message.py
@@ -0,0 +1,102 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Some unit tests for ssh protocol message blocks.
+"""
+
+import unittest
+from paramiko.message import Message
+
+
+class MessageTest (unittest.TestCase):
+
+ __a = '\x00\x00\x00\x17\x07\x60\xe0\x90\x00\x00\x00\x01q\x00\x00\x00\x05hello\x00\x00\x03\xe8' + ('x' * 1000)
+ __b = '\x01\x00\xf3\x00\x3f\x00\x00\x00\x10huey,dewey,louie'
+ __c = '\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\xf5\xe4\xd3\xc2\xb1\x09\x00\x00\x00\x01\x11\x00\x00\x00\x07\x00\xf5\xe4\xd3\xc2\xb1\x09\x00\x00\x00\x06\x9a\x1b\x2c\x3d\x4e\xf7'
+ __d = '\x00\x00\x00\x05\x00\x00\x00\x05\x11\x22\x33\x44\x55\x01\x00\x00\x00\x03cat\x00\x00\x00\x03a,b'
+
+ def test_1_encode(self):
+ msg = Message()
+ msg.add_int(23)
+ msg.add_int(123789456)
+ msg.add_string('q')
+ msg.add_string('hello')
+ msg.add_string('x' * 1000)
+ self.assertEquals(str(msg), self.__a)
+
+ msg = Message()
+ msg.add_boolean(True)
+ msg.add_boolean(False)
+ msg.add_byte('\xf3')
+ msg.add_bytes('\x00\x3f')
+ msg.add_list(['huey', 'dewey', 'louie'])
+ self.assertEquals(str(msg), self.__b)
+
+ msg = Message()
+ msg.add_int64(5)
+ msg.add_int64(0xf5e4d3c2b109L)
+ msg.add_mpint(17)
+ msg.add_mpint(0xf5e4d3c2b109L)
+ msg.add_mpint(-0x65e4d3c2b109L)
+ self.assertEquals(str(msg), self.__c)
+
+ def test_2_decode(self):
+ msg = Message(self.__a)
+ self.assertEquals(msg.get_int(), 23)
+ self.assertEquals(msg.get_int(), 123789456)
+ self.assertEquals(msg.get_string(), 'q')
+ self.assertEquals(msg.get_string(), 'hello')
+ self.assertEquals(msg.get_string(), 'x' * 1000)
+
+ msg = Message(self.__b)
+ self.assertEquals(msg.get_boolean(), True)
+ self.assertEquals(msg.get_boolean(), False)
+ self.assertEquals(msg.get_byte(), '\xf3')
+ self.assertEquals(msg.get_bytes(2), '\x00\x3f')
+ self.assertEquals(msg.get_list(), ['huey', 'dewey', 'louie'])
+
+ msg = Message(self.__c)
+ self.assertEquals(msg.get_int64(), 5)
+ self.assertEquals(msg.get_int64(), 0xf5e4d3c2b109L)
+ self.assertEquals(msg.get_mpint(), 17)
+ self.assertEquals(msg.get_mpint(), 0xf5e4d3c2b109L)
+ self.assertEquals(msg.get_mpint(), -0x65e4d3c2b109L)
+
+ def test_3_add(self):
+ msg = Message()
+ msg.add(5)
+ msg.add(0x1122334455L)
+ msg.add(True)
+ msg.add('cat')
+ msg.add(['a', 'b'])
+ self.assertEquals(str(msg), self.__d)
+
+ def test_4_misc(self):
+ msg = Message(self.__d)
+ self.assertEquals(msg.get_int(), 5)
+ self.assertEquals(msg.get_mpint(), 0x1122334455L)
+ self.assertEquals(msg.get_so_far(), self.__d[:13])
+ self.assertEquals(msg.get_remainder(), self.__d[13:])
+ msg.rewind()
+ self.assertEquals(msg.get_int(), 5)
+ self.assertEquals(msg.get_so_far(), self.__d[:4])
+ self.assertEquals(msg.get_remainder(), self.__d[4:])
+
diff --git a/tests/test_packetizer.py b/tests/test_packetizer.py
new file mode 100644
index 0000000..8c992bd
--- /dev/null
+++ b/tests/test_packetizer.py
@@ -0,0 +1,70 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Some unit tests for the ssh2 protocol in Transport.
+"""
+
+import unittest
+from loop import LoopSocket
+from Crypto.Cipher import AES
+from Crypto.Hash import SHA, HMAC
+from paramiko import Message, Packetizer, util
+
+class PacketizerTest (unittest.TestCase):
+
+ def test_1_write (self):
+ rsock = LoopSocket()
+ wsock = LoopSocket()
+ rsock.link(wsock)
+ p = Packetizer(wsock)
+ p.set_log(util.get_logger('paramiko.transport'))
+ p.set_hexdump(True)
+ cipher = AES.new('\x00' * 16, AES.MODE_CBC, '\x55' * 16)
+ p.set_outbound_cipher(cipher, 16, SHA, 12, '\x1f' * 20)
+
+ # message has to be at least 16 bytes long, so we'll have at least one
+ # block of data encrypted that contains zero random padding bytes
+ m = Message()
+ m.add_byte(chr(100))
+ m.add_int(100)
+ m.add_int(1)
+ m.add_int(900)
+ p.send_message(m)
+ data = rsock.recv(100)
+ # 32 + 12 bytes of MAC = 44
+ self.assertEquals(44, len(data))
+ self.assertEquals('\x43\x91\x97\xbd\x5b\x50\xac\x25\x87\xc2\xc4\x6b\xc7\xe9\x38\xc0', data[:16])
+
+ def test_2_read (self):
+ rsock = LoopSocket()
+ wsock = LoopSocket()
+ rsock.link(wsock)
+ p = Packetizer(rsock)
+ p.set_log(util.get_logger('paramiko.transport'))
+ p.set_hexdump(True)
+ cipher = AES.new('\x00' * 16, AES.MODE_CBC, '\x55' * 16)
+ p.set_inbound_cipher(cipher, 16, SHA, 12, '\x1f' * 20)
+
+ wsock.send('C\x91\x97\xbd[P\xac%\x87\xc2\xc4k\xc7\xe98\xc0' + \
+ '\x90\xd2\x16V\rqsa8|L=\xfb\x97}\xe2n\x03\xb1\xa0\xc2\x1c\xd6AAL\xb4Y')
+ cmd, m = p.read_message()
+ self.assertEquals(100, cmd)
+ self.assertEquals(100, m.get_int())
+ self.assertEquals(1, m.get_int())
+ self.assertEquals(900, m.get_int())
diff --git a/tests/test_pkey.py b/tests/test_pkey.py
new file mode 100644
index 0000000..e56edb1
--- /dev/null
+++ b/tests/test_pkey.py
@@ -0,0 +1,140 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Some unit tests for public/private key objects.
+"""
+
+import unittest
+from paramiko import RSAKey, DSSKey, Message, util, randpool
+
+# from openssh's ssh-keygen
+PUB_RSA = 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA049W6geFpmsljTwfvI1UmKWWJPNFI74+vNKTk4dmzkQY2yAMs6FhlvhlI8ysU4oj71ZsRYMecHbBbxdN79+JRFVYTKaLqjwGENeTd+yv4q+V2PvZv3fLnzApI3l7EJCqhWwJUHJ1jAkZzqDx0tyOL4uoZpww3nmE0kb3y21tH4c='
+PUB_DSS = 'ssh-dss AAAAB3NzaC1kc3MAAACBAOeBpgNnfRzr/twmAQRu2XwWAp3CFtrVnug6s6fgwj/oLjYbVtjAy6pl/h0EKCWx2rf1IetyNsTxWrniA9I6HeDj65X1FyDkg6g8tvCnaNB8Xp/UUhuzHuGsMIipRxBxw9LF608EqZcj1E3ytktoW5B5OcjrkEoz3xG7C+rpIjYvAAAAFQDwz4UnmsGiSNu5iqjn3uTzwUpshwAAAIEAkxfFeY8P2wZpDjX0MimZl5wkoFQDL25cPzGBuB4OnB8NoUk/yjAHIIpEShw8V+LzouMK5CTJQo5+Ngw3qIch/WgRmMHy4kBq1SsXMjQCte1So6HBMvBPIW5SiMTmjCfZZiw4AYHK+B/JaOwaG9yRg2Ejg4Ok10+XFDxlqZo8Y+wAAACARmR7CCPjodxASvRbIyzaVpZoJ/Z6x7dAumV+ysrV1BVYd0lYukmnjO1kKBWApqpH1ve9XDQYN8zgxM4b16L21kpoWQnZtXrY3GZ4/it9kUgyB7+NwacIBlXa8cMDL7Q/69o0d54U0X/NeX5QxuYR6OMJlrkQB7oiW/P/1mwjQgE='
+FINGER_RSA = '1024 60:73:38:44:cb:51:86:65:7f:de:da:a2:2b:5a:57:d5'
+FINGER_DSS = '1024 44:78:f0:b9:a2:3c:c5:18:20:09:ff:75:5b:c1:d2:6c'
+SIGNED_RSA = '20:d7:8a:31:21:cb:f7:92:12:f2:a4:89:37:f5:78:af:e6:16:b6:25:b9:97:3d:a2:cd:5f:ca:20:21:73:4c:ad:34:73:8f:20:77:28:e2:94:15:08:d8:91:40:7a:85:83:bf:18:37:95:dc:54:1a:9b:88:29:6c:73:ca:38:b4:04:f1:56:b9:f2:42:9d:52:1b:29:29:b4:4f:fd:c9:2d:af:47:d2:40:76:30:f3:63:45:0c:d9:1d:43:86:0f:1c:70:e2:93:12:34:f3:ac:c5:0a:2f:14:50:66:59:f1:88:ee:c1:4a:e9:d1:9c:4e:46:f0:0e:47:6f:38:74:f1:44:a8'
+
+
+class KeyTest (unittest.TestCase):
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def test_1_generate_key_bytes(self):
+ from Crypto.Hash import MD5
+ key = util.generate_key_bytes(MD5, '\x01\x02\x03\x04', 'happy birthday', 30)
+ exp = util.unhexify('61E1F272F4C1C4561586BD322498C0E924672780F47BB37DDA7D54019E64')
+ self.assertEquals(exp, key)
+
+ def test_2_load_rsa(self):
+ key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ self.assertEquals('ssh-rsa', key.get_name())
+ exp_rsa = FINGER_RSA.split()[1].replace(':', '')
+ my_rsa = util.hexify(key.get_fingerprint()).lower()
+ self.assertEquals(exp_rsa, my_rsa)
+ self.assertEquals(PUB_RSA.split()[1], key.get_base64())
+ self.assertEquals(1024, key.get_bits())
+
+ def test_3_load_rsa_password(self):
+ key = RSAKey.from_private_key_file('tests/test_rsa_password.key', 'television')
+ self.assertEquals('ssh-rsa', key.get_name())
+ exp_rsa = FINGER_RSA.split()[1].replace(':', '')
+ my_rsa = util.hexify(key.get_fingerprint()).lower()
+ self.assertEquals(exp_rsa, my_rsa)
+ self.assertEquals(PUB_RSA.split()[1], key.get_base64())
+ self.assertEquals(1024, key.get_bits())
+
+ def test_4_load_dss(self):
+ key = DSSKey.from_private_key_file('tests/test_dss.key')
+ self.assertEquals('ssh-dss', key.get_name())
+ exp_dss = FINGER_DSS.split()[1].replace(':', '')
+ my_dss = util.hexify(key.get_fingerprint()).lower()
+ self.assertEquals(exp_dss, my_dss)
+ self.assertEquals(PUB_DSS.split()[1], key.get_base64())
+ self.assertEquals(1024, key.get_bits())
+
+ def test_5_load_dss_password(self):
+ key = DSSKey.from_private_key_file('tests/test_dss_password.key', 'television')
+ self.assertEquals('ssh-dss', key.get_name())
+ exp_dss = FINGER_DSS.split()[1].replace(':', '')
+ my_dss = util.hexify(key.get_fingerprint()).lower()
+ self.assertEquals(exp_dss, my_dss)
+ self.assertEquals(PUB_DSS.split()[1], key.get_base64())
+ self.assertEquals(1024, key.get_bits())
+
+ def test_6_compare_rsa(self):
+ # verify that the private & public keys compare equal
+ key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ self.assertEquals(key, key)
+ pub = RSAKey(data=str(key))
+ self.assert_(key.can_sign())
+ self.assert_(not pub.can_sign())
+ self.assertEquals(key, pub)
+
+ def test_7_compare_dss(self):
+ # verify that the private & public keys compare equal
+ key = DSSKey.from_private_key_file('tests/test_dss.key')
+ self.assertEquals(key, key)
+ pub = DSSKey(data=str(key))
+ self.assert_(key.can_sign())
+ self.assert_(not pub.can_sign())
+ self.assertEquals(key, pub)
+
+ def test_8_sign_rsa(self):
+ # verify that the rsa private key can sign and verify
+ key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ msg = key.sign_ssh_data(randpool, 'ice weasels')
+ self.assert_(type(msg) is Message)
+ msg.rewind()
+ self.assertEquals('ssh-rsa', msg.get_string())
+ sig = ''.join([chr(int(x, 16)) for x in SIGNED_RSA.split(':')])
+ self.assertEquals(sig, msg.get_string())
+ msg.rewind()
+ pub = RSAKey(data=str(key))
+ self.assert_(pub.verify_ssh_sig('ice weasels', msg))
+
+ def test_9_sign_dss(self):
+ # verify that the dss private key can sign and verify
+ key = DSSKey.from_private_key_file('tests/test_dss.key')
+ msg = key.sign_ssh_data(randpool, 'ice weasels')
+ self.assert_(type(msg) is Message)
+ msg.rewind()
+ self.assertEquals('ssh-dss', msg.get_string())
+ # can't do the same test as we do for RSA, because DSS signatures
+ # are usually different each time. but we can test verification
+ # anyway so it's ok.
+ self.assertEquals(40, len(msg.get_string()))
+ msg.rewind()
+ pub = DSSKey(data=str(key))
+ self.assert_(pub.verify_ssh_sig('ice weasels', msg))
+
+ def test_A_generate_rsa(self):
+ key = RSAKey.generate(1024)
+ msg = key.sign_ssh_data(randpool, 'jerri blank')
+ msg.rewind()
+ self.assert_(key.verify_ssh_sig('jerri blank', msg))
+
+ def test_B_generate_dss(self):
+ key = DSSKey.generate(1024)
+ msg = key.sign_ssh_data(randpool, 'jerri blank')
+ msg.rewind()
+ self.assert_(key.verify_ssh_sig('jerri blank', msg))
diff --git a/tests/test_rsa.key b/tests/test_rsa.key
new file mode 100644
index 0000000..f50e9c5
--- /dev/null
+++ b/tests/test_rsa.key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWgIBAAKBgQDTj1bqB4WmayWNPB+8jVSYpZYk80Ujvj680pOTh2bORBjbIAyz
+oWGW+GUjzKxTiiPvVmxFgx5wdsFvF03v34lEVVhMpouqPAYQ15N37K/ir5XY+9m/
+d8ufMCkjeXsQkKqFbAlQcnWMCRnOoPHS3I4vi6hmnDDeeYTSRvfLbW0fhwIBIwKB
+gBIiOqZYaoqbeD9OS9z2K9KR2atlTxGxOJPXiP4ESqP3NVScWNwyZ3NXHpyrJLa0
+EbVtzsQhLn6rF+TzXnOlcipFvjsem3iYzCpuChfGQ6SovTcOjHV9z+hnpXvQ/fon
+soVRZY65wKnF7IAoUwTmJS9opqgrN6kRgCd3DASAMd1bAkEA96SBVWFt/fJBNJ9H
+tYnBKZGw0VeHOYmVYbvMSstssn8un+pQpUm9vlG/bp7Oxd/m+b9KWEh2xPfv6zqU
+avNwHwJBANqzGZa/EpzF4J8pGti7oIAPUIDGMtfIcmqNXVMckrmzQ2vTfqtkEZsA
+4rE1IERRyiJQx6EJsz21wJmGV9WJQ5kCQQDwkS0uXqVdFzgHO6S++tjmjYcxwr3g
+H0CoFYSgbddOT6miqRskOQF3DZVkJT3kyuBgU2zKygz52ukQZMqxCb1fAkASvuTv
+qfpH87Qq5kQhNKdbbwbmd2NxlNabazPijWuphGTdW0VfJdWfklyS2Kr+iqrs/5wV
+HhathJt636Eg7oIjAkA8ht3MQ+XSl9yIJIS8gVpbPxSw5OMfw0PjVE7tBdQruiSc
+nvuQES5C9BMHjF39LZiGH1iLQy7FgdHyoP+eodI7
+-----END RSA PRIVATE KEY-----
diff --git a/tests/test_rsa_password.key b/tests/test_rsa_password.key
new file mode 100644
index 0000000..7713049
--- /dev/null
+++ b/tests/test_rsa_password.key
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,DAA422E8A5A8EFB7
+
++nssHGmWl91IcmGiE6DdCIqGvAP04tuLh60wLjWBvdjtF9CjztPnF57xe+6pBk7o
+YgF/Ry3ik9ZV9rHNcRXifDKM9crxtYlpUlkM2C0SP89sXaO0P1Q1yCnrtZUwDIKO
+BNV8et5X7+AGMFsy/nmv0NFMrbpoG03Dppsloecd29NTRlIXwxHRFyHxy6BdEib/
+Dn0mEVbwg3dTvKrd/sODWR9hRwpDGM9nkEbUNJCh7vMwFKkIZZF8yqFvmGckuO5C
+HZkDJ6RkEDYrSZJAavQaiOPF5bu3cHughRfnrIKVrQuTTDiWjwX9Ny8e4p4k7dy7
+rLpbPhtxUOUbpOF7T1QxljDi1Tcq3Ebk3kN/ZLPRFnDrJfyUx+m9BXmAa78Wxs/l
+KaS8DTkYykd3+EGOeJFjZg2bvgqil4V+5JIt/+MQ5pZ/ui7i4GcH2bvZyGAbrXzP
+3LipSAdN5RG+fViLe3HUtfCx4ZAgtU78TWJrLk2FwKQGglFxKLnswp+IKZb09rZV
+uxmG4pPLUnH+mMYdiy5ugzj+5C8iZ0/IstpHVmO6GWROfedpJ82eMztTOtdhfMep
+8Z3HwAwkDtksL7Gq9klb0Wq5+uRlBWetixddAvnmqXNzYhaANWcAF/2a2Hz06Rb0
+e6pe/g0Ek5KV+6YI+D+oEblG0Sr+d4NtxtDTmIJKNVkmzlhI2s53bHp6txCb5JWJ
+S8mKLPBBBzaNXYd3odDvGXguuxUntWSsD11KyR6B9DXMIfWQW5dT7hp5kTMGlXWJ
+lD2hYab13DCCuAkwVTdpzhHYLZyxLYoSu05W6z8SAOs=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/test_sftp.py b/tests/test_sftp.py
new file mode 100644
index 0000000..993899a
--- /dev/null
+++ b/tests/test_sftp.py
@@ -0,0 +1,740 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+some unit tests to make sure sftp works.
+
+a real actual sftp server is contacted, and a new folder is created there to
+do test file operations in (so no existing files will be harmed).
+"""
+
+import logging
+import os
+import random
+import sys
+import threading
+import time
+import unittest
+
+import paramiko
+from stub_sftp import StubServer, StubSFTPServer
+from loop import LoopSocket
+
+ARTICLE = '''
+Insulin sensitivity and liver insulin receptor structure in ducks from two
+genera
+
+T. Constans, B. Chevalier, M. Derouet and J. Simon
+Station de Recherches Avicoles, Institut National de la Recherche Agronomique,
+Nouzilly, France.
+
+Insulin sensitivity and liver insulin receptor structure were studied in
+5-wk-old ducks from two genera (Muscovy and Pekin). In the fasting state, both
+duck types were equally resistant to exogenous insulin compared with chicken.
+Despite the low potency of duck insulin, the number of insulin receptors was
+lower in Muscovy duck and similar in Pekin duck and chicken liver membranes.
+After 125I-insulin cross-linking, the size of the alpha-subunit of the
+receptors from the three species was 135,000. Wheat germ agglutinin-purified
+receptors from the three species were contaminated by an active and unusual
+adenosinetriphosphatase (ATPase) contaminant (highest activity in Muscovy
+duck). Sequential purification of solubilized receptor from both duck types on
+lentil and then wheat germ agglutinin lectins led to a fraction of receptors
+very poor in ATPase activity that exhibited a beta-subunit size (95,000) and
+tyrosine kinase activity similar to those of ATPase-free chicken insulin
+receptors. Therefore the ducks from the two genera exhibit an alpha-beta-
+structure for liver insulin receptors and a clear difference in the number of
+liver insulin receptors. Their sensitivity to insulin is, however, similarly
+decreased compared with chicken.
+'''
+
+FOLDER = os.environ.get('TEST_FOLDER', 'temp-testing000')
+
+sftp = None
+tc = None
+g_big_file_test = True
+
+
+class SFTPTest (unittest.TestCase):
+
+ def init(hostname, username, keyfile, passwd):
+ global sftp, tc
+
+ t = paramiko.Transport(hostname)
+ tc = t
+ try:
+ key = paramiko.RSAKey.from_private_key_file(keyfile, passwd)
+ except paramiko.PasswordRequiredException:
+ sys.stderr.write('\n\nparamiko.RSAKey.from_private_key_file REQUIRES PASSWORD.\n')
+ sys.stderr.write('You have two options:\n')
+ sys.stderr.write('* Use the "-K" option to point to a different (non-password-protected)\n')
+ sys.stderr.write(' private key file.\n')
+ sys.stderr.write('* Use the "-P" option to provide the password needed to unlock this private\n')
+ sys.stderr.write(' key.\n')
+ sys.stderr.write('\n')
+ sys.exit(1)
+ try:
+ t.connect(username=username, pkey=key)
+ except paramiko.SSHException:
+ t.close()
+ sys.stderr.write('\n\nparamiko.Transport.connect FAILED.\n')
+ sys.stderr.write('There are several possible reasons why it might fail so quickly:\n\n')
+ sys.stderr.write('* The host to connect to (%s) is not a valid SSH server.\n' % hostname)
+ sys.stderr.write(' (Use the "-H" option to change the host.)\n')
+ sys.stderr.write('* The username to auth as (%s) is invalid.\n' % username)
+ sys.stderr.write(' (Use the "-U" option to change the username.)\n')
+ sys.stderr.write('* The private key given (%s) is not accepted by the server.\n' % keyfile)
+ sys.stderr.write(' (Use the "-K" option to provide a different key file.)\n')
+ sys.stderr.write('\n')
+ sys.exit(1)
+ sftp = paramiko.SFTP.from_transport(t)
+ init = staticmethod(init)
+
+ def init_loopback():
+ global sftp, tc
+
+ socks = LoopSocket()
+ sockc = LoopSocket()
+ sockc.link(socks)
+ tc = paramiko.Transport(sockc)
+ ts = paramiko.Transport(socks)
+
+ host_key = paramiko.RSAKey.from_private_key_file('tests/test_rsa.key')
+ ts.add_server_key(host_key)
+ event = threading.Event()
+ server = StubServer()
+ ts.set_subsystem_handler('sftp', paramiko.SFTPServer, StubSFTPServer)
+ ts.start_server(event, server)
+ tc.connect(username='slowdive', password='pygmalion')
+ event.wait(1.0)
+
+ sftp = paramiko.SFTP.from_transport(tc)
+ init_loopback = staticmethod(init_loopback)
+
+ def set_big_file_test(onoff):
+ global g_big_file_test
+ g_big_file_test = onoff
+ set_big_file_test = staticmethod(set_big_file_test)
+
+ def setUp(self):
+ global FOLDER
+ for i in xrange(1000):
+ FOLDER = FOLDER[:-3] + '%03d' % i
+ try:
+ sftp.mkdir(FOLDER)
+ break
+ except (IOError, OSError):
+ pass
+
+ def tearDown(self):
+ sftp.rmdir(FOLDER)
+
+ def test_1_file(self):
+ """
+ verify that we can create a file.
+ """
+ f = sftp.open(FOLDER + '/test', 'w')
+ try:
+ self.assertEqual(f.stat().st_size, 0)
+ f.close()
+ finally:
+ sftp.remove(FOLDER + '/test')
+
+ def test_2_close(self):
+ """
+ verify that closing the sftp session doesn't do anything bad, and that
+ a new one can be opened.
+ """
+ global sftp
+ sftp.close()
+ try:
+ sftp.open(FOLDER + '/test2', 'w')
+ self.fail('expected exception')
+ except:
+ pass
+ sftp = paramiko.SFTP.from_transport(tc)
+
+ def test_3_write(self):
+ """
+ verify that a file can be created and written, and the size is correct.
+ """
+ f = sftp.open(FOLDER + '/duck.txt', 'w')
+ try:
+ f.write(ARTICLE)
+ f.close()
+ self.assertEqual(sftp.stat(FOLDER + '/duck.txt').st_size, 1483)
+ finally:
+ sftp.remove(FOLDER + '/duck.txt')
+
+ def test_4_append(self):
+ """
+ verify that a file can be opened for append, and tell() still works.
+ """
+ f = sftp.open(FOLDER + '/append.txt', 'w')
+ try:
+ f.write('first line\nsecond line\n')
+ self.assertEqual(f.tell(), 23)
+ f.close()
+
+ f = sftp.open(FOLDER + '/append.txt', 'a+')
+ f.write('third line!!!\n')
+ self.assertEqual(f.tell(), 37)
+ self.assertEqual(f.stat().st_size, 37)
+ f.seek(-26, f.SEEK_CUR)
+ self.assertEqual(f.readline(), 'second line\n')
+ f.close()
+ finally:
+ sftp.remove(FOLDER + '/append.txt')
+
+ def test_5_rename(self):
+ """
+ verify that renaming a file works.
+ """
+ f = sftp.open(FOLDER + '/first.txt', 'w')
+ try:
+ f.write('content!\n');
+ f.close()
+ sftp.rename(FOLDER + '/first.txt', FOLDER + '/second.txt')
+ try:
+ f = sftp.open(FOLDER + '/first.txt', 'r')
+ self.assert_(False, 'no exception on reading nonexistent file')
+ except IOError:
+ pass
+ f = sftp.open(FOLDER + '/second.txt', 'r')
+ f.seek(-6, f.SEEK_END)
+ self.assertEqual(f.read(4), 'tent')
+ f.close()
+ finally:
+ try:
+ sftp.remove(FOLDER + '/first.txt')
+ except:
+ pass
+ try:
+ sftp.remove(FOLDER + '/second.txt')
+ except:
+ pass
+
+ def test_6_folder(self):
+ """
+ create a temporary folder, verify that we can create a file in it, then
+ remove the folder and verify that we can't create a file in it anymore.
+ """
+ sftp.mkdir(FOLDER + '/subfolder')
+ f = sftp.open(FOLDER + '/subfolder/test', 'w')
+ f.close()
+ sftp.remove(FOLDER + '/subfolder/test')
+ sftp.rmdir(FOLDER + '/subfolder')
+ try:
+ f = sftp.open(FOLDER + '/subfolder/test')
+ # shouldn't be able to create that file
+ self.assert_(False, 'no exception at dummy file creation')
+ except IOError:
+ pass
+
+ def test_7_listdir(self):
+ """
+ verify that a folder can be created, a bunch of files can be placed in it,
+ and those files show up in sftp.listdir.
+ """
+ try:
+ f = sftp.open(FOLDER + '/duck.txt', 'w')
+ f.close()
+
+ f = sftp.open(FOLDER + '/fish.txt', 'w')
+ f.close()
+
+ f = sftp.open(FOLDER + '/tertiary.py', 'w')
+ f.close()
+
+ x = sftp.listdir(FOLDER)
+ self.assertEqual(len(x), 3)
+ self.assert_('duck.txt' in x)
+ self.assert_('fish.txt' in x)
+ self.assert_('tertiary.py' in x)
+ self.assert_('random' not in x)
+ finally:
+ sftp.remove(FOLDER + '/duck.txt')
+ sftp.remove(FOLDER + '/fish.txt')
+ sftp.remove(FOLDER + '/tertiary.py')
+
+ def test_8_setstat(self):
+ """
+ verify that the setstat functions (chown, chmod, utime) work.
+ """
+ f = sftp.open(FOLDER + '/special', 'w')
+ try:
+ f.close()
+
+ stat = sftp.stat(FOLDER + '/special')
+ sftp.chmod(FOLDER + '/special', (stat.st_mode & ~0777) | 0600)
+ self.assertEqual(sftp.stat(FOLDER + '/special').st_mode & 0777, 0600)
+
+ mtime = stat.st_mtime - 3600
+ atime = stat.st_atime - 1800
+ sftp.utime(FOLDER + '/special', (atime, mtime))
+ nstat = sftp.stat(FOLDER + '/special')
+ self.assertEqual(nstat.st_mtime, mtime)
+ self.assertEqual(nstat.st_atime, atime)
+
+ # can't really test chown, since we'd have to know a valid uid.
+ finally:
+ sftp.remove(FOLDER + '/special')
+
+ def test_9_readline_seek(self):
+ """
+ create a text file and write a bunch of text into it. then count the lines
+ in the file, and seek around to retreive particular lines. this should
+ verify that read buffering and 'tell' work well together, and that read
+ buffering is reset on 'seek'.
+ """
+ try:
+ f = sftp.open(FOLDER + '/duck.txt', 'w')
+ f.write(ARTICLE)
+ f.close()
+
+ f = sftp.open(FOLDER + '/duck.txt', 'r+')
+ line_number = 0
+ loc = 0
+ pos_list = []
+ for line in f:
+ line_number += 1
+ pos_list.append(loc)
+ loc = f.tell()
+ f.seek(pos_list[6], f.SEEK_SET)
+ self.assertEqual(f.readline(), 'Nouzilly, France.\n')
+ f.seek(pos_list[17], f.SEEK_SET)
+ self.assertEqual(f.readline()[:4], 'duck')
+ f.seek(pos_list[10], f.SEEK_SET)
+ self.assertEqual(f.readline(), 'duck types were equally resistant to exogenous insulin compared with chicken.\n')
+ f.close()
+ finally:
+ sftp.remove(FOLDER + '/duck.txt')
+
+ def test_A_write_seek(self):
+ """
+ create a text file, seek back and change part of it, and verify that the
+ changes worked.
+ """
+ f = sftp.open(FOLDER + '/testing.txt', 'w')
+ try:
+ f.write('hello kitty.\n')
+ f.seek(-5, f.SEEK_CUR)
+ f.write('dd')
+ f.close()
+
+ self.assertEqual(sftp.stat(FOLDER + '/testing.txt').st_size, 13)
+ f = sftp.open(FOLDER + '/testing.txt', 'r')
+ data = f.read(20)
+ f.close()
+ self.assertEqual(data, 'hello kiddy.\n')
+ finally:
+ sftp.remove(FOLDER + '/testing.txt')
+
+ def test_B_symlink(self):
+ """
+ create a symlink and then check that lstat doesn't follow it.
+ """
+ f = sftp.open(FOLDER + '/original.txt', 'w')
+ try:
+ f.write('original\n')
+ f.close()
+ sftp.symlink('original.txt', FOLDER + '/link.txt')
+ self.assertEqual(sftp.readlink(FOLDER + '/link.txt'), 'original.txt')
+
+ f = sftp.open(FOLDER + '/link.txt', 'r')
+ self.assertEqual(f.readlines(), [ 'original\n' ])
+ f.close()
+
+ cwd = sftp.normalize('.')
+ if cwd[-1] == '/':
+ cwd = cwd[:-1]
+ abs_path = cwd + '/' + FOLDER + '/original.txt'
+ sftp.symlink(abs_path, FOLDER + '/link2.txt')
+ self.assertEqual(abs_path, sftp.readlink(FOLDER + '/link2.txt'))
+
+ self.assertEqual(sftp.lstat(FOLDER + '/link.txt').st_size, 12)
+ self.assertEqual(sftp.stat(FOLDER + '/link.txt').st_size, 9)
+ # the sftp server may be hiding extra path members from us, so the
+ # length may be longer than we expect:
+ self.assert_(sftp.lstat(FOLDER + '/link2.txt').st_size >= len(abs_path))
+ self.assertEqual(sftp.stat(FOLDER + '/link2.txt').st_size, 9)
+ self.assertEqual(sftp.stat(FOLDER + '/original.txt').st_size, 9)
+ finally:
+ try:
+ sftp.remove(FOLDER + '/link.txt')
+ except:
+ pass
+ try:
+ sftp.remove(FOLDER + '/link2.txt')
+ except:
+ pass
+ try:
+ sftp.remove(FOLDER + '/original.txt')
+ except:
+ pass
+
+ def test_C_flush_seek(self):
+ """
+ verify that buffered writes are automatically flushed on seek.
+ """
+ f = sftp.open(FOLDER + '/happy.txt', 'w', 1)
+ try:
+ f.write('full line.\n')
+ f.write('partial')
+ f.seek(9, f.SEEK_SET)
+ f.write('?\n')
+ f.close()
+
+ f = sftp.open(FOLDER + '/happy.txt', 'r')
+ self.assertEqual(f.readline(), 'full line?\n')
+ self.assertEqual(f.read(7), 'partial')
+ f.close()
+ finally:
+ try:
+ sftp.remove(FOLDER + '/happy.txt')
+ except:
+ pass
+
+ def test_D_lots_of_files(self):
+ """
+ create a bunch of files over the same session.
+ """
+ global g_big_file_test
+ if not g_big_file_test:
+ return
+ numfiles = 100
+ try:
+ for i in range(numfiles):
+ f = sftp.open('%s/file%d.txt' % (FOLDER, i), 'w', 1)
+ f.write('this is file #%d.\n' % i)
+ f.close()
+ sftp.chmod('%s/file%d.txt' % (FOLDER, i), 0660)
+
+ # now make sure every file is there, by creating a list of filenmes
+ # and reading them in random order.
+ numlist = range(numfiles)
+ while len(numlist) > 0:
+ r = numlist[random.randint(0, len(numlist) - 1)]
+ f = sftp.open('%s/file%d.txt' % (FOLDER, r))
+ self.assertEqual(f.readline(), 'this is file #%d.\n' % r)
+ f.close()
+ numlist.remove(r)
+ finally:
+ for i in range(numfiles):
+ try:
+ sftp.remove('%s/file%d.txt' % (FOLDER, i))
+ except:
+ pass
+
+ def test_E_big_file(self):
+ """
+ write a 1MB file with no buffering.
+ """
+ global g_big_file_test
+ if not g_big_file_test:
+ return
+ kblob = (1024 * 'x')
+ start = time.time()
+ try:
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'w')
+ for n in range(1024):
+ f.write(kblob)
+ if n % 128 == 0:
+ sys.stderr.write('.')
+ f.close()
+ sys.stderr.write(' ')
+
+ self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024)
+ end = time.time()
+ sys.stderr.write('%ds ' % round(end - start))
+
+ start = time.time()
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'r')
+ for n in range(1024):
+ data = f.read(1024)
+ self.assertEqual(data, kblob)
+ f.close()
+
+ end = time.time()
+ sys.stderr.write('%ds ' % round(end - start))
+ finally:
+ sftp.remove('%s/hongry.txt' % FOLDER)
+
+ def test_F_big_file_pipelined(self):
+ """
+ write a 1MB file, with no linefeeds, using pipelining.
+ """
+ global g_big_file_test
+ if not g_big_file_test:
+ return
+ kblob = (1024 * 'x')
+ start = time.time()
+ try:
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'w')
+ f.set_pipelined(True)
+ for n in range(1024):
+ f.write(kblob)
+ if n % 128 == 0:
+ sys.stderr.write('.')
+ f.close()
+ sys.stderr.write(' ')
+
+ self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024)
+ end = time.time()
+ sys.stderr.write('%ds ' % round(end - start))
+
+ start = time.time()
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'r')
+ f.prefetch()
+ for n in range(1024):
+ data = f.read(1024)
+ self.assertEqual(data, kblob)
+ f.close()
+
+ end = time.time()
+ sys.stderr.write('%ds ' % round(end - start))
+ finally:
+ sftp.remove('%s/hongry.txt' % FOLDER)
+
+ def test_G_lots_of_prefetching(self):
+ """
+ prefetch a 1MB file a bunch of times, discarding the file object
+ without using it, to verify that paramiko doesn't get confused.
+ """
+ global g_big_file_test
+ if not g_big_file_test:
+ return
+ kblob = (1024 * 'x')
+ try:
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'w')
+ f.set_pipelined(True)
+ for n in range(1024):
+ f.write(kblob)
+ if n % 128 == 0:
+ sys.stderr.write('.')
+ f.close()
+ sys.stderr.write(' ')
+
+ self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024)
+
+ for i in range(10):
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'r')
+ f.prefetch()
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'r')
+ f.prefetch()
+ for n in range(1024):
+ data = f.read(1024)
+ self.assertEqual(data, kblob)
+ if n % 128 == 0:
+ sys.stderr.write('.')
+ f.close()
+ sys.stderr.write(' ')
+ finally:
+ sftp.remove('%s/hongry.txt' % FOLDER)
+
+ def test_H_big_file_big_buffer(self):
+ """
+ write a 1MB file, with no linefeeds, and a big buffer.
+ """
+ global g_big_file_test
+ if not g_big_file_test:
+ return
+ mblob = (1024 * 1024 * 'x')
+ try:
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'w', 128 * 1024)
+ f.write(mblob)
+ f.close()
+
+ self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024)
+ finally:
+ sftp.remove('%s/hongry.txt' % FOLDER)
+
+ def test_I_big_file_renegotiate(self):
+ """
+ write a 1MB file, forcing key renegotiation in the middle.
+ """
+ global g_big_file_test
+ if not g_big_file_test:
+ return
+ t = sftp.sock.get_transport()
+ t.packetizer.REKEY_BYTES = 512 * 1024
+ k32blob = (32 * 1024 * 'x')
+ try:
+ f = sftp.open('%s/hongry.txt' % FOLDER, 'w', 128 * 1024)
+ for i in xrange(32):
+ f.write(k32blob)
+ f.close()
+
+ self.assertEqual(sftp.stat('%s/hongry.txt' % FOLDER).st_size, 1024 * 1024)
+ self.assertNotEquals(t.H, t.session_id)
+ finally:
+ sftp.remove('%s/hongry.txt' % FOLDER)
+ t.packetizer.REKEY_BYTES = pow(2, 30)
+
+ def test_J_realpath(self):
+ """
+ test that realpath is returning something non-empty and not an
+ error.
+ """
+ pwd = sftp.normalize('.')
+ self.assert_(len(pwd) > 0)
+ f = sftp.normalize('./' + FOLDER)
+ self.assert_(len(f) > 0)
+ self.assertEquals(os.path.join(pwd, FOLDER), f)
+
+ def test_K_mkdir(self):
+ """
+ verify that mkdir/rmdir work.
+ """
+ try:
+ sftp.mkdir(FOLDER + '/subfolder')
+ except:
+ self.assert_(False, 'exception creating subfolder')
+ try:
+ sftp.mkdir(FOLDER + '/subfolder')
+ self.assert_(False, 'no exception overwriting subfolder')
+ except IOError:
+ pass
+ try:
+ sftp.rmdir(FOLDER + '/subfolder')
+ except:
+ self.assert_(False, 'exception removing subfolder')
+ try:
+ sftp.rmdir(FOLDER + '/subfolder')
+ self.assert_(False, 'no exception removing nonexistent subfolder')
+ except IOError:
+ pass
+
+ def test_L_chdir(self):
+ """
+ verify that chdir/getcwd work.
+ """
+ root = sftp.normalize('.')
+ if root[-1] != '/':
+ root += '/'
+ try:
+ sftp.mkdir(FOLDER + '/alpha')
+ sftp.chdir(FOLDER + '/alpha')
+ sftp.mkdir('beta')
+ self.assertEquals(root + FOLDER + '/alpha', sftp.getcwd())
+ self.assertEquals(['beta'], sftp.listdir('.'))
+
+ sftp.chdir('beta')
+ f = sftp.open('fish', 'w')
+ f.write('hello\n')
+ f.close()
+ sftp.chdir('..')
+ self.assertEquals(['fish'], sftp.listdir('beta'))
+ sftp.chdir('..')
+ self.assertEquals(['fish'], sftp.listdir('alpha/beta'))
+ finally:
+ sftp.chdir(root)
+ try:
+ sftp.unlink(FOLDER + '/alpha/beta/fish')
+ except:
+ pass
+ try:
+ sftp.rmdir(FOLDER + '/alpha/beta')
+ except:
+ pass
+ try:
+ sftp.rmdir(FOLDER + '/alpha')
+ except:
+ pass
+
+ def test_M_get_put(self):
+ """
+ verify that get/put work.
+ """
+ import os, warnings
+ warnings.filterwarnings('ignore', 'tempnam.*')
+
+ localname = os.tempnam()
+ text = 'All I wanted was a plastic bunny rabbit.\n'
+ f = open(localname, 'w')
+ f.write(text)
+ f.close()
+ sftp.put(localname, FOLDER + '/bunny.txt')
+
+ f = sftp.open(FOLDER + '/bunny.txt', 'r')
+ self.assertEquals(text, f.read(128))
+ f.close()
+
+ os.unlink(localname)
+ localname = os.tempnam()
+ sftp.get(FOLDER + '/bunny.txt', localname)
+
+ f = open(localname, 'r')
+ self.assertEquals(text, f.read(128))
+ f.close()
+
+ os.unlink(localname)
+ sftp.unlink(FOLDER + '/bunny.txt')
+
+ def test_N_check(self):
+ """
+ verify that file.check() works against our own server.
+ (it's an sftp extension that we support, and may be the only ones who
+ support it.)
+ """
+ f = sftp.open(FOLDER + '/kitty.txt', 'w')
+ f.write('here kitty kitty' * 64)
+ f.close()
+
+ try:
+ f = sftp.open(FOLDER + '/kitty.txt', 'r')
+ sum = f.check('sha1')
+ self.assertEquals('91059CFC6615941378D413CB5ADAF4C5EB293402', paramiko.util.hexify(sum))
+ sum = f.check('md5', 0, 512)
+ self.assertEquals('93DE4788FCA28D471516963A1FE3856A', paramiko.util.hexify(sum))
+ sum = f.check('md5', 0, 0, 510)
+ self.assertEquals('EB3B45B8CD55A0707D99B177544A319F373183D241432BB2157AB9E46358C4AC90370B5CADE5D90336FC1716F90B36D6',
+ paramiko.util.hexify(sum))
+ finally:
+ sftp.unlink(FOLDER + '/kitty.txt')
+
+ def test_O_x_flag(self):
+ """
+ verify that the 'x' flag works when opening a file.
+ """
+ f = sftp.open(FOLDER + '/unusual.txt', 'wx')
+ f.close()
+
+ try:
+ try:
+ f = sftp.open(FOLDER + '/unusual.txt', 'wx')
+ self.fail('expected exception')
+ except IOError, x:
+ pass
+ finally:
+ sftp.unlink(FOLDER + '/unusual.txt')
+
+ def test_P_utf8(self):
+ """
+ verify that unicode strings are encoded into utf8 correctly.
+ """
+ f = sftp.open(FOLDER + '/something', 'w')
+ f.write('okay')
+ f.close()
+
+ try:
+ sftp.rename(FOLDER + '/something', FOLDER + u'/\u00fcnic\u00f8de')
+ sftp.open(FOLDER + '/\xc3\xbcnic\xc3\xb8\x64\x65', 'r')
+ except Exception, e:
+ self.fail('exception ' + e)
+ sftp.unlink(FOLDER + '/\xc3\xbcnic\xc3\xb8\x64\x65')
+
diff --git a/tests/test_transport.py b/tests/test_transport.py
new file mode 100644
index 0000000..5fcc786
--- /dev/null
+++ b/tests/test_transport.py
@@ -0,0 +1,573 @@
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Some unit tests for the ssh2 protocol in Transport.
+"""
+
+import sys, time, threading, unittest
+import select
+from paramiko import Transport, SecurityOptions, ServerInterface, RSAKey, DSSKey, \
+ SSHException, BadAuthenticationType, InteractiveQuery, util
+from paramiko import AUTH_FAILED, AUTH_PARTIALLY_SUCCESSFUL, AUTH_SUCCESSFUL
+from paramiko import OPEN_SUCCEEDED
+from loop import LoopSocket
+
+
+class NullServer (ServerInterface):
+ paranoid_did_password = False
+ paranoid_did_public_key = False
+ paranoid_key = DSSKey.from_private_key_file('tests/test_dss.key')
+
+ def get_allowed_auths(self, username):
+ if username == 'slowdive':
+ return 'publickey,password'
+ if username == 'paranoid':
+ if not self.paranoid_did_password and not self.paranoid_did_public_key:
+ return 'publickey,password'
+ elif self.paranoid_did_password:
+ return 'publickey'
+ else:
+ return 'password'
+ if username == 'commie':
+ return 'keyboard-interactive'
+ return 'publickey'
+
+ def check_auth_password(self, username, password):
+ if (username == 'slowdive') and (password == 'pygmalion'):
+ return AUTH_SUCCESSFUL
+ if (username == 'paranoid') and (password == 'paranoid'):
+ # 2-part auth (even openssh doesn't support this)
+ self.paranoid_did_password = True
+ if self.paranoid_did_public_key:
+ return AUTH_SUCCESSFUL
+ return AUTH_PARTIALLY_SUCCESSFUL
+ return AUTH_FAILED
+
+ def check_auth_publickey(self, username, key):
+ if (username == 'paranoid') and (key == self.paranoid_key):
+ # 2-part auth
+ self.paranoid_did_public_key = True
+ if self.paranoid_did_password:
+ return AUTH_SUCCESSFUL
+ return AUTH_PARTIALLY_SUCCESSFUL
+ return AUTH_FAILED
+
+ def check_auth_interactive(self, username, submethods):
+ if username == 'commie':
+ self.username = username
+ return InteractiveQuery('password', 'Please enter a password.', ('Password', False))
+ return AUTH_FAILED
+
+ def check_auth_interactive_response(self, responses):
+ if self.username == 'commie':
+ if (len(responses) == 1) and (responses[0] == 'cat'):
+ return AUTH_SUCCESSFUL
+ return AUTH_FAILED
+
+ def check_channel_request(self, kind, chanid):
+ return OPEN_SUCCEEDED
+
+ def check_channel_exec_request(self, channel, command):
+ if command != 'yes':
+ return False
+ return True
+
+ def check_channel_shell_request(self, channel):
+ return True
+
+ def check_global_request(self, kind, msg):
+ self._global_request = kind
+ return False
+
+
+class TransportTest (unittest.TestCase):
+
+ def setUp(self):
+ self.socks = LoopSocket()
+ self.sockc = LoopSocket()
+ self.sockc.link(self.socks)
+ self.tc = Transport(self.sockc)
+ self.ts = Transport(self.socks)
+
+ def tearDown(self):
+ self.tc.close()
+ self.ts.close()
+ self.socks.close()
+ self.sockc.close()
+
+ def test_1_security_options(self):
+ o = self.tc.get_security_options()
+ self.assertEquals(type(o), SecurityOptions)
+ self.assert_(('aes256-cbc', 'blowfish-cbc') != o.ciphers)
+ o.ciphers = ('aes256-cbc', 'blowfish-cbc')
+ self.assertEquals(('aes256-cbc', 'blowfish-cbc'), o.ciphers)
+ try:
+ o.ciphers = ('aes256-cbc', 'made-up-cipher')
+ self.assert_(False)
+ except ValueError:
+ pass
+ try:
+ o.ciphers = 23
+ self.assert_(False)
+ except TypeError:
+ pass
+
+ def test_2_compute_key(self):
+ self.tc.K = 123281095979686581523377256114209720774539068973101330872763622971399429481072519713536292772709507296759612401802191955568143056534122385270077606457721553469730659233569339356140085284052436697480759510519672848743794433460113118986816826624865291116513647975790797391795651716378444844877749505443714557929L
+ self.tc.H = util.unhexify('0C8307CDE6856FF30BA93684EB0F04C2520E9ED3')
+ self.tc.session_id = self.tc.H
+ key = self.tc._compute_key('C', 32)
+ self.assertEquals('207E66594CA87C44ECCBA3B3CD39FDDB378E6FDB0F97C54B2AA0CFBF900CD995',
+ util.hexify(key))
+
+ def test_3_simple(self):
+ """
+ verify that we can establish an ssh link with ourselves across the
+ loopback sockets. this is hardly "simple" but it's simpler than the
+ later tests. :)
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.assertEquals(None, self.tc.get_username())
+ self.assertEquals(None, self.ts.get_username())
+ self.assertEquals(False, self.tc.is_authenticated())
+ self.assertEquals(False, self.ts.is_authenticated())
+ self.ts.start_server(event, server)
+ self.tc.connect(hostkey=public_host_key,
+ username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+ self.assertEquals('slowdive', self.tc.get_username())
+ self.assertEquals('slowdive', self.ts.get_username())
+ self.assertEquals(True, self.tc.is_authenticated())
+ self.assertEquals(True, self.ts.is_authenticated())
+
+ def test_4_special(self):
+ """
+ verify that the client can demand odd handshake settings, and can
+ renegotiate keys in mid-stream.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ options = self.tc.get_security_options()
+ options.ciphers = ('aes256-cbc',)
+ options.digests = ('hmac-md5-96',)
+ self.tc.connect(hostkey=public_host_key,
+ username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+ self.assertEquals('aes256-cbc', self.tc.local_cipher)
+ self.assertEquals('aes256-cbc', self.tc.remote_cipher)
+ self.assertEquals(12, self.tc.packetizer.get_mac_size_out())
+ self.assertEquals(12, self.tc.packetizer.get_mac_size_in())
+
+ self.tc.send_ignore(1024)
+ self.assert_(self.tc.renegotiate_keys())
+ self.ts.send_ignore(1024)
+
+ def test_5_keepalive(self):
+ """
+ verify that the keepalive will be sent.
+ """
+ self.tc.set_hexdump(True)
+
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.connect(hostkey=public_host_key,
+ username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ self.assertEquals(None, getattr(server, '_global_request', None))
+ self.tc.set_keepalive(1)
+ time.sleep(2)
+ self.assertEquals('keepalive@lag.net', server._global_request)
+
+ def test_6_bad_auth_type(self):
+ """
+ verify that we get the right exception when an unsupported auth
+ type is requested.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ try:
+ self.tc.connect(hostkey=public_host_key,
+ username='unknown', password='error')
+ self.assert_(False)
+ except:
+ etype, evalue, etb = sys.exc_info()
+ self.assertEquals(BadAuthenticationType, etype)
+ self.assertEquals(['publickey'], evalue.allowed_types)
+
+ def test_7_bad_password(self):
+ """
+ verify that a bad password gets the right exception, and that a retry
+ with the right password works.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.ultra_debug = True
+ self.tc.connect(hostkey=public_host_key)
+ try:
+ self.tc.auth_password(username='slowdive', password='error')
+ self.assert_(False)
+ except:
+ etype, evalue, etb = sys.exc_info()
+ self.assertEquals(SSHException, etype)
+ self.tc.auth_password(username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ def test_8_multipart_auth(self):
+ """
+ verify that multipart auth works.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.ultra_debug = True
+ self.tc.connect(hostkey=public_host_key)
+ remain = self.tc.auth_password(username='paranoid', password='paranoid')
+ self.assertEquals(['publickey'], remain)
+ key = DSSKey.from_private_key_file('tests/test_dss.key')
+ remain = self.tc.auth_publickey(username='paranoid', key=key)
+ self.assertEquals([], remain)
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ def test_9_interactive_auth(self):
+ """
+ verify keyboard-interactive auth works.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.ultra_debug = True
+ self.tc.connect(hostkey=public_host_key)
+
+ def handler(title, instructions, prompts):
+ self.got_title = title
+ self.got_instructions = instructions
+ self.got_prompts = prompts
+ return ['cat']
+ remain = self.tc.auth_interactive('commie', handler)
+ self.assertEquals(self.got_title, 'password')
+ self.assertEquals(self.got_prompts, [('Password', False)])
+ self.assertEquals([], remain)
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ def test_A_interactive_auth_fallback(self):
+ """
+ verify that a password auth attempt will fallback to "interactive"
+ if password auth isn't supported but interactive is.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.ultra_debug = True
+ self.tc.connect(hostkey=public_host_key)
+ remain = self.tc.auth_password('commie', 'cat')
+ self.assertEquals([], remain)
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ def test_B_exec_command(self):
+ """
+ verify that exec_command() does something reasonable.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.ultra_debug = True
+ self.tc.connect(hostkey=public_host_key)
+ self.tc.auth_password(username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ chan = self.tc.open_session()
+ schan = self.ts.accept(1.0)
+ self.assert_(not chan.exec_command('no'))
+
+ chan = self.tc.open_session()
+ self.assert_(chan.exec_command('yes'))
+ schan = self.ts.accept(1.0)
+ schan.send('Hello there.\n')
+ schan.send_stderr('This is on stderr.\n')
+ schan.close()
+
+ f = chan.makefile()
+ self.assertEquals('Hello there.\n', f.readline())
+ self.assertEquals('', f.readline())
+ f = chan.makefile_stderr()
+ self.assertEquals('This is on stderr.\n', f.readline())
+ self.assertEquals('', f.readline())
+
+ # now try it with combined stdout/stderr
+ chan = self.tc.open_session()
+ self.assert_(chan.exec_command('yes'))
+ schan = self.ts.accept(1.0)
+ schan.send('Hello there.\n')
+ schan.send_stderr('This is on stderr.\n')
+ schan.close()
+
+ chan.set_combine_stderr(True)
+ f = chan.makefile()
+ self.assertEquals('Hello there.\n', f.readline())
+ self.assertEquals('This is on stderr.\n', f.readline())
+ self.assertEquals('', f.readline())
+
+ def test_C_invoke_shell(self):
+ """
+ verify that invoke_shell() does something reasonable.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.ultra_debug = True
+ self.tc.connect(hostkey=public_host_key)
+ self.tc.auth_password(username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ chan = self.tc.open_session()
+ self.assert_(chan.invoke_shell())
+ schan = self.ts.accept(1.0)
+ chan.send('communist j. cat\n')
+ f = schan.makefile()
+ self.assertEquals('communist j. cat\n', f.readline())
+ chan.close()
+ self.assertEquals('', f.readline())
+
+ def test_D_exit_status(self):
+ """
+ verify that get_exit_status() works.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.ultra_debug = True
+ self.tc.connect(hostkey=public_host_key)
+ self.tc.auth_password(username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ chan = self.tc.open_session()
+ schan = self.ts.accept(1.0)
+ self.assert_(chan.exec_command('yes'))
+ schan.send('Hello there.\n')
+ # trigger an EOF
+ schan.shutdown_read()
+ schan.shutdown_write()
+ schan.send_exit_status(23)
+ schan.close()
+
+ f = chan.makefile()
+ self.assertEquals('Hello there.\n', f.readline())
+ self.assertEquals('', f.readline())
+ self.assertEquals(23, chan.recv_exit_status())
+ chan.close()
+
+ def test_E_select(self):
+ """
+ verify that select() on a channel works.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.assert_(not event.isSet())
+ self.ts.start_server(event, server)
+ self.tc.ultra_debug = True
+ self.tc.connect(hostkey=public_host_key)
+ self.tc.auth_password(username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ chan = self.tc.open_session()
+ self.assert_(chan.invoke_shell())
+ schan = self.ts.accept(1.0)
+
+ # nothing should be ready
+ r, w, e = select.select([chan], [], [], 0.1)
+ self.assertEquals([], r)
+ self.assertEquals([], w)
+ self.assertEquals([], e)
+
+ schan.send('hello\n')
+
+ # something should be ready now (give it 1 second to appear)
+ for i in range(10):
+ r, w, e = select.select([chan], [], [], 0.1)
+ if chan in r:
+ break
+ time.sleep(0.1)
+ self.assertEquals([chan], r)
+ self.assertEquals([], w)
+ self.assertEquals([], e)
+
+ self.assertEquals('hello\n', chan.recv(6))
+
+ # and, should be dead again now
+ r, w, e = select.select([chan], [], [], 0.1)
+ self.assertEquals([], r)
+ self.assertEquals([], w)
+ self.assertEquals([], e)
+
+ schan.close()
+
+ # detect eof?
+ for i in range(10):
+ r, w, e = select.select([chan], [], [], 0.1)
+ if chan in r:
+ break
+ time.sleep(0.1)
+ self.assertEquals([chan], r)
+ self.assertEquals([], w)
+ self.assertEquals([], e)
+ self.assertEquals('', chan.recv(16))
+
+ chan.close()
+
+ def test_F_renegotiate(self):
+ """
+ verify that a transport can correctly renegotiate mid-stream.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ event = threading.Event()
+ server = NullServer()
+ self.ts.start_server(event, server)
+ self.tc.connect(hostkey=public_host_key,
+ username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ self.tc.packetizer.REKEY_BYTES = 16384
+
+ chan = self.tc.open_session()
+ self.assert_(chan.exec_command('yes'))
+ schan = self.ts.accept(1.0)
+
+ self.assertEquals(self.tc.H, self.tc.session_id)
+ for i in range(20):
+ chan.send('x' * 1024)
+ chan.close()
+
+ # allow a few seconds for the rekeying to complete
+ for i in xrange(50):
+ if self.tc.H != self.tc.session_id:
+ break
+ time.sleep(0.1)
+ self.assertNotEquals(self.tc.H, self.tc.session_id)
+
+ schan.close()
+
+ def test_G_compression(self):
+ """
+ verify that zlib compression is basically working.
+ """
+ host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
+ public_host_key = RSAKey(data=str(host_key))
+ self.ts.add_server_key(host_key)
+ self.ts.get_security_options().compression = ('zlib',)
+ self.tc.get_security_options().compression = ('zlib',)
+ event = threading.Event()
+ server = NullServer()
+ self.ts.start_server(event, server)
+ self.tc.connect(hostkey=public_host_key,
+ username='slowdive', password='pygmalion')
+ event.wait(1.0)
+ self.assert_(event.isSet())
+ self.assert_(self.ts.is_active())
+
+ chan = self.tc.open_session()
+ self.assert_(chan.exec_command('yes'))
+ schan = self.ts.accept(1.0)
+
+ bytes = self.tc.packetizer._Packetizer__sent_bytes
+ chan.send('x' * 1024)
+ bytes2 = self.tc.packetizer._Packetizer__sent_bytes
+ # tests show this is actually compressed to *52 bytes*! including packet overhead! nice!! :)
+ self.assert_(bytes2 - bytes < 1024)
+
+ chan.close()
+ schan.close()
diff --git a/tests/test_util.py b/tests/test_util.py
new file mode 100644
index 0000000..fa8c029
--- /dev/null
+++ b/tests/test_util.py
@@ -0,0 +1,80 @@
+#!/usr/bin/python
+
+# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
+#
+# This file is part of paramiko.
+#
+# Paramiko is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+"""
+Some unit tests for utility functions.
+"""
+
+import cStringIO
+import unittest
+from Crypto.Hash import SHA
+import paramiko.util
+
+
+test_config_file = """\
+Host *
+ User robey
+ IdentityFile =~/.ssh/id_rsa
+
+# comment
+Host *.example.com
+ \tUser bjork
+Port=3333
+Host *
+ \t \t Crazy something dumb
+Host spoo.example.com
+Crazy something else
+"""
+
+
+class UtilTest (unittest.TestCase):
+
+ K = 14730343317708716439807310032871972459448364195094179797249681733965528989482751523943515690110179031004049109375612685505881911274101441415545039654102474376472240501616988799699744135291070488314748284283496055223852115360852283821334858541043710301057312858051901453919067023103730011648890038847384890504L
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def test_1_parse_config(self):
+ global test_config_file
+ f = cStringIO.StringIO(test_config_file)
+ config = paramiko.util.parse_ssh_config(f)
+ self.assertEquals(config, [ {'identityfile': '~/.ssh/id_rsa', 'host': '*', 'user': 'robey',
+ 'crazy': 'something dumb '},
+ {'host': '*.example.com', 'user': 'bjork', 'port': '3333'},
+ {'host': 'spoo.example.com', 'crazy': 'something else'}])
+
+ def test_2_host_config(self):
+ global test_config_file
+ f = cStringIO.StringIO(test_config_file)
+ config = paramiko.util.parse_ssh_config(f)
+ c = paramiko.util.lookup_ssh_host_config('irc.danger.com', config)
+ self.assertEquals(c, {'identityfile': '~/.ssh/id_rsa', 'user': 'robey', 'crazy': 'something dumb '})
+ c = paramiko.util.lookup_ssh_host_config('irc.example.com', config)
+ self.assertEquals(c, {'identityfile': '~/.ssh/id_rsa', 'user': 'bjork', 'crazy': 'something dumb ', 'port': '3333'})
+ c = paramiko.util.lookup_ssh_host_config('spoo.example.com', config)
+ self.assertEquals(c, {'identityfile': '~/.ssh/id_rsa', 'user': 'bjork', 'crazy': 'something else', 'port': '3333'})
+
+ def test_3_generate_key_bytes(self):
+ x = paramiko.util.generate_key_bytes(SHA, 'ABCDEFGH', 'This is my secret passphrase.', 64)
+ hex = ''.join(['%02x' % ord(c) for c in x])
+ self.assertEquals(hex, '9110e2f6793b69363e58173e9436b13a5a4b339005741d5c680e505f57d871347b4239f14fb5c46e857d5e100424873ba849ac699cea98d729e57b3e84378e8b')