ChangeLog of JSch
====================================================================
Last modified: Thu May  4 02:11:44 UTC 2006

Changes since version 0.1.27:	
- bugfix: ChannelSftp.localAbsolutePath did not work correctly.      FIXED.
- bugfix: ChannelSftp.chmod did not work for directory.              FIXED.
- bugfix: ProxyHTTP had a bug in processing HTTP headers.            FIXED.
- bugfix: messages before server's version string should be ignored. FIXED.
- feature: Environment Variable Passing.

Changes since version 0.1.26:
- bugfix: there was a session crash bug. That occurrence is rare, but 
          depends on the thread scheduling.  FIXED.
- bugfix: problems in generating remote/local absolute paths on sftp.  FIXED.
- bugfix: problems in handling cancel operations for sftp.  FIXED.
- bugfix: ChannelX11s were not terminated for a wrong cookie.  FIXED.
- bugfix: NoSuchAlgorithmException should be thrown if JCE is not 
	  accessible.  FIXED.
- bugfix: ProxyHTTP should check the return code from proxy.  FIXED.
- bugfix: server's version string should be checked carefully.  FIXED.
- feature: some more improvements on sftp uploading.
- feature: 'getUserName' method is added to Session class.

	
Changes since version 0.1.25:		
- bugfix: infinite loop/hang on connection at unexpected error during
          key-exchanging operation.  FIXED
- bugfix: delays on sftp uploading.  FIXED
- bugfix: failed to purge a host-key from its repository in some case. FIXED.
- feature: SOCKS4 proxy

	
Changes since version 0.1.24:		
- bugfix: remote port forwarding is not established. FIXED. 
- bugfix: failed to parse known_hosts file if it has a long public key blob.
 	  FIXED.
- bugfix: sftp put/get operations keep failing.  FIXED.
- bugfix: ChannelShell.setXForwarding always set xforwarding to be true. FIXED.
- change: ChannelShell.setPty is added.
- change: Proxy interface is free from session object.
- change: added examples/ScpToNoneCipher.java to demonstrate NONE Cipher switching.
- feature: added NONE Cipher switching support.
- feature: timeout check will be enabled for proxy connections.

	
Changes since version 0.1.23:		
- bugfix: there was resource leak problems in closing local port forwardings.
  	  FIXED. 
- bugfix: there was a session crash problems in using aes-cbc cipher.  FIXED. 
- change: ChannelSession.setPtySize was redefined.
- feature: added SocketFactory for remote port forwarding.
	   Session.setPortForwardingR(int rport, String host, int lport, 
	                              SocketFactory sf)
- feature: added ServerSocketFactory for local port forwarding.	
	   Session.setPortForwardingL(String boundaddress,
	                              int lport, String host, int rport,
	                              ServerSocketFactory ssf)

Changes since version 0.1.22:		
- bugfix: there was a freeze problem at fails on key-exchanging. FIXED.
- bugfix: race-condition forcefully disconnects session in closing channels.
	  FIXED. 

	
Changes since version 0.1.21:		
- bugfix: there is a bug in read() method implementation for the
          input-stream returned from ChannelSftp.get().  FIXED. 
- bugfix: at fail on requesting for the remote port forwarding,
	  an exception should be thrown. FIXED. 
- bugfix: SSH_MSG_CHANNEL_OPEN request for the X11 forwarding should not
	  be accepted if clients don not expect it. FIXED.
- bugfix: there is a problem in transferring large data(mote than 1GB)
	  to sshd from recent OpenSSH(3.6.1 or later). FIXED.
	  For security concerns, those sshd will re-key periodically and 
	  jsch had failed to handle it.
- bugfix: 'exec', 'shell' and 'sftp' channels will fail if the acceptable
	  packet size by remote sshd is not so large. FIXED.
- bugfix: there are problems in 'InputStream ChannelSftp.get(String)' 
   	  and 'OutputStream put(String)'.  FIXED.
- feature: added boolean flag 'dontclose' to 
	   * setInputStream(),
	   * setOutputStream() and
	   * setExtOutputStream() 
           methods of Channel class.
- feature: added 'com.jcraft.jsch.ChannelSubsystem'
- feature: allowed to control the compression level in the packet compression.
 	   Refer to 'examples/Compression.java'.
- change: modified 'com/jcraft/jsch/jce/KeyPairGenRSA.java' to be complied
	  on JDK 1.2.
- change: 'examples/ScpTo.java' and 'examples/ScpFrom.java' will use
	  'long' type for the file size instead of 'int'.
- change: 'Identity.getSignature' method will not expect 'session'.
- change: while waiting for socket connection establishment, Thread.join
	  will be used instead of Thread.sleep.


Changes since version 0.1.20:		
- known issue: there are problems in 'InputStream ChannelSftp.get(String)' 
   	       and 'OutputStream put(String)'.  They will be re-implemented
  	       in the next release.
- bugfix: EOF packets should not be sent twice. This bug had crashed 
	  the session on every channel close. FIXED.
- bugfix: at the fail on opening connection to remote sshd,
          a misleading exception "invalid server's version string"
          had been thrown. FIXED.
- bugfix: fixed a bug in hadling the size of remote channel window.
- bugfix: channels should not be closed even if EOF is received. FIXED.
- bugfix: fixed bugs in file name globing on sftp.
- change: to transfer packets efficiently, the size of internal buffer
          for each channel has been increased.
- change: ChannelSftp.ls will return a vector of 
	  com.jcraft.jsch.ChannelSftp.LsEntry.  Sorry for inconveniences.
- feature: added ForwardedTCPIPDaemon.  Refer to 'examples/Daemon.java', 
           which demonstrates to provide network services like inetd.
- feature: ChannelExec.setPty() method to request for assigning pseudo tty.
- feature: added ciphers "aes128-cbc", "aes192-cbc" and "aes256-cbc".
	   Refer to 'examples/AES.java'.
- feature: local port-forwarding settings can be dynamically deleted 
           by the bound address.
- feature: added 'Channel.isClosed()'. Channel.getExitStatus() should be
	   invoked after Channel.isClosed()==true.

	
Changes since version 0.1.19:		
- ClassCastException while calling ChannelExec.finalize() method. FIXED.
  Thanks to wswiatek at ais dot pl.

	
Changes since version 0.1.18:		
- fixed problems related to thread-safety.
  Thanks to Eric Meek at cs dot utk dot edu.
- At the lost of the network connectivity to the remote SSHD,  clients 
  connected to the local port were never made aware of the
  disconnection.  FIXED.
- fixed confusions in handling EOFs from local input stream and 
  the input stream for remote process.
- 'com.jcraft.jsch.jce.AES128CBC' is added, but it is not be functional in
  this release.  It will work in the next release.
- Some sshd(Foxit-WAC-Serve) waits for SSH_MSG_NEWKEYS request before
  sending it. FIXED.	
- fixed a problem in connecting to Cisco Devices.	
  Thanks to Jason Jeffords at comcast dot net.
- changed the method 'add' of 'HostKeyRepository' interface.
- 'UIKeyborarInteracetive' will ignore empty prompt by sshd.
- added 'sendIgnore()' method to 'Session' class.
- added '-p' for scp command in 'examples/ScpTo.java' to preserve
  modification times, access times, and modes from the original file.

	
Changes since version 0.1.17:		
- added 'com.jcraft.jsch.HostKeyRepository' interface.
  It will allow you to handle host keys in your own repository
  (for example, RDB) instead of using 'known_hosts' file.
- added methods to get the finger-print of host keys.
  refer to 'examples/KnownHosts.java'.	
- improved 'known_hosts' file handling.
  - comment lines will be kept.
  - SSH1 host keys will be kept.
  - each hostname can have multiple host keys.	
- fixed a crash bug in processing private keys which have too long key-bits.

	
Changes since version 0.1.16:		
- 'com.jcraft.jsch.jce.DHG1' and 'com.jcraft.jsch.jce.DHGEX' are moved to
  'com.jcraft.jsch' package.	 
- added APIs to handle hostkeys included in 'known_hosts',
     JSch.getHostKeys(),
     JSch.removeHostKey()
- allowing to set timeout value in opening sockets,
     Session.connect(int timeout)

	
Changes since version 0.1.15:		
- adding support of setting mtime for remote files on sftp channel.
- setKnownHosts method of JSch class will accept InputStream.
- implementation of Basic password authentication for HTTP proxy.
- fixed a bug in checking which ssh protocol version remote sshd supports
- SSH_MSG_CHANNEL_OPEN_FAILURE will be handled correctly.
- methods in SftpATTRS class has been public.
- working around SIGBLOB bug hidden in older sshd.

	
Changes since version 0.1.14:		
- fixed a crash bug in accepting keep-alive messages.
- the parent directory of 'known_hosts' file will be created 
  if it does not exist.
- the Subsystem channel support was removed.

	
Changes since version 0.1.13:		
- added 'setClientVersion' method to Session class.
- fixed hung-up problem on SftpChannel in connecting to
  the sshd, which does not support sftp.
- fixed OutOfMemory exception problem in decrypting a private key
  with bad passphrase.
- fixed hung-up problem in communicating with the sshd,
  whose window size is small.
- RuntimeExceptions will be thrown from jsch APIs.
- SSH_MSG_CHANNEL_SUCCESS and SSH_MSG_CHANNEL_FAILURE requests
  have been supported.
  	
	
Changes since version 0.1.12:	
- added the partial authentication support.
- allowing to change the passphrase of a private key file
  instead of creating a new private key.
- added 'examples/ChangePassphrase.java' 	
- the interface 'UIKeyboardInteractive' has been modified.

	
Changes since version 0.1.11:	
- RSA keypair generation.
- added the method 'getFingerPrint' to KeyPair class,
  which will return the finger print of the public key.
- fixed a bug in generating non-ciphered private key.

	
Changes since version 0.1.10:	
- fixed a bug in the password authentication, sneaked in
  0.1.9. By this bug, the password authentication had failed every time.

	
Changes since version 0.1.9:	
- username and password can be in UTF-8 encoding.
- DSA keypair generation.
- added 'examples/KeyGen.java', which demonstrates
  the DSA keypair generation.

	
Changes since version 0.1.8:	
- fixed crash problems on the local port forwarding.
- fixed crash problems on the remote port forwarding.
- added setErrStream() and getErrStream() to ChannelExec.
- added keyboard-interactive authentication support.
- modified TripleDESCBC to support IBM's JDK 1.4.1.
- added 'examples/UserAuthKI.java', which demonstrates keyboard-interactive
  authentication.

	
Changes since version 0.1.7:	
- added APIs for sftp resume downloads and uploads.
  The author greatly appreciates 
	elpernotador(webmaster at unlix dot com dot ar),
  who motivated him to hack this functionality.
- 'examples/Sftp.java' demonstrates sftp resume functionality.
  Please refer to "put-resume", "put-append", "get-resume" and
  "get-append" command.
- added the support of 'window-change' request.
- fixed a freeze bug in 'Inputstream get(String src)' method of 'ChannelSftp'
  class.

	
Changes since version 0.1.6:	
- added 'int getExitStatus()' method to 'Channel' class.
- fixed crash bugs in closing channels for port forwarding.
- fixed glitches in managing forwarded ports.

	
Changes since version 0.1.5:	
- fixed crash bugs in port forwarding.
- modified to use "ssh-rsa" for key-exchanging by the default.
- the port forwarding setting can be canceled dynamically.
- fixed a freeze bug in getting an empty file on sftp channel.

	
Changes since version 0.1.4:	
- fixed a bug in managing local window size.
  The local window should be consumed by CHANNEL_EXTENDED_DATA packet.
- checking the availability of the ssh session in opening channels.
  In some case, ssh session had been freezed.	
- java.io.File.separator will be refereed in generating local pathname
  on sftp channel.
- absolute local pathname will be handled correctly on sftp channel.

	
Changes since version 0.1.3:	
- fixed a serious bug, which had leaked resources related to
  ChannelExec.	
- added the older SFTP protocol(version 0, 1, 2) support.
- fixed a problem in the authentication step for FSecure's sshd.
- fixed a bug, which had broken Diffie-Hellman key exchange in some case.
- implemented the file name globbing for local files on sftp session. 
- fixed a bug in the file name globbing.
- added an interface 'SftpProgressMonitor'.
- modified 'examples/Sftp.java' to demonstrate displaying progress-bar
  in transferring files. 	 
	
	
Changes since version 0.1.2:	
- modified 'build.xml' to allow Ant users to compile jsch with debug
  support (i.e. line-number tables) by overriding the property
  javac.debug on the command line.
- added a property 'StrictHostKeyChecking'.
- added 'UserAuthNone' class to request a list of authentication methods on
  remote sshd.	 
- channels will be managed in each sessions.
- added 'ChannelSubsystem', which allows users to use their own
  implementations for subsystems.
- added 'isEOF()' method to 'Channel' class.
- supported key pair files in DOS file format.

	
Changes since version 0.1.1:	
- added the file name globbing support on sftp session.
- fixed a bug in the public key authentication.
  When there was not a public key in ~/.ssh/, that problem occurred.
- improved the 'setTimeout' method.
- fixed a typo in 'LICENSE.txt'

	
Changes since version 0.1.0:	
- added 'rekey' method to 'Session' class for key re-exchanging.
- added 'rekey' and 'compression' command to 'examples/Sftp.java'.
- added new 'get' and 'put' methods to 'ChannelSftp'.
  Those methods will operate I/O streams.
- methods in 'ChannelSftp' will throw 'SftpException'	
- 'ChannelSftp.Ssh_exp_name' is added for the output of 'ls'.
  Thanks to Graeme Vetterlein.
- added 'setTimeout' and 'getTimeout' methods to 'Session' class.
- guess will be done in the algorithm negotiation step.
- FSecure's DSA private key has been supported partially.
- hostkeys will be saved into 'known_hosts' file.
- fixed a bug in 'Util.toBase64' method.	
- 'Identity' will reject unrecognized keys.
- 'build.xml' will check if jzlib is available or not. 
  Thanks to Stefan Bodewig.	
- added javadoc target in 'build.xml'.
  Thanks to Robert Anderson.
	
	
Changes since version 0.0.13:	
- fixed a bug in connecting to Fsecure's sshd on Windows.
- the license is changed to BSD style.	


Changes since version 0.0.12:	
- fixed a bug in verifying DAS signatures.
- added 'SftpATTR' class, which allow you to get attributes of remote files on 
  sftp channel, and 'stat', 'lstat' method are added to 'ChannelSftp' class.
- added 'getInputStream' and 'getOutputStream' methods Channel class, which 
  return passive I/O streams.	 
- 'setIdentity' method is deleted from 'Session' class and
  'addIdentity' method is added to 'JSch' class
- 'setUserName' method is deleted from 'Session' class and
  'getSession' method of 'JSch' class is changed.
- 'isConnected' method is added to 'Session' class.
- 'UserInfo' interface is changed.

	
Changes since version 0.0.11:	
- taking care of remote window size.
- adding 'disconnect' method to 'Channel' and 'Session' classes.
- signal sending support.
- 'mkdir' command for sftp.
- 'fromBase64' method has been moved to Util class and 'toBase64' method has
   also been added to that class.
- 'KnownHosts' class for checking host-key in 'known_host' file.
- 'examples/KnownHosts.java' has been added.
- 'setUserName' and 'setPassword' methods have been added to Session class.
- 'UserInfo' interface has been changed.
- The implementation of compression has moved to 'com.jcraft.jsch.jcraft'
  package.
- fixed a bug in handling 'SSH_MSG_CHANNEL_REQUET' request.
- fixed a bug in sending multiple requests on a single session.
	
	
Changes since version 0.0.10:	
- Diffie-Hellman key exchange 'diffie-hellman-group1-sha1' is supported.
  Refer to 'src/com/jcraft/jsch/jce/DHG1.java'.
  Thanks to Mitsugu Kitano, whose feedback was very helpful.
- By the default, 'diffie-hellman-group1-sha1' will be used in the
  key exchange step.
- The file attribute on 'SSH File Transfer Protocol' is supported.
  Now, we can say JSch supports 'SSH File Transfer Protocol'.
- 'examples/Sftp.java' is updated.
  'chgrp','chown','chmod' commands are supported.

	
Changes since version 0.0.9:	
- SSH File Transfer Protocol is supported partially.
- 'examples/Sftp.java' is added.
  This example is a tiny sftp command and supports 'cd','put','get','rm',etc.
- 'close' method is added to Channel interface.	
- build.xml for examples is added.
  Thanks to Ronald Broberg.

	
Changes since version 0.0.8:	
- the tunneling through a SOCKS5 proxy is supported.
- 'examples/ScpFrom.java' is added.
- 'com.jcraft.jsch.UserInfo' interface is modified.

	
Changes since version 0.0.7:	
- Packet comression is supported.
- 'examples/Compression.java' is added.
- JZlib is included.

	
Changes since version 0.0.6:	
- RSA host key is supported.
- RSA public key authentication is supported.


Changes since version 0.0.5:	
- DSA public key authentication is supported.
- examples/UserAuthPubKey.java is added.
- examples/ScpTo.java is added.
	

Changes since version 0.0.4:	
- 3des-cbc is supported.
- hmac-sha1 is supported.
- hmac-md5-96 is supported.
- hmac-sha1-96 is supported.	
	

Changes since version 0.0.3:	
- port forwarding, similar to the -L option of SSH.
- examples/PortForwardingL.java is added.
- examples/StreamForwarding.java is added.
- examples/Exec.java is renamed as examples/Shell.java
- stream forwarding is added.
- ChannelSftp class is added for implementing filexfer.
- interfaces for jsch users are changed.
	

Changes since version 0.0.2:	
- remote exec is supported.	
- examples/Exec.java is added.
- build.xml and some scripts for Ant are added. (lbruand)
- Const class is added. (lbruand)

	
Changes since version 0.0.1:
- the tunneling via HTTP proxy is supported.
- port forwarding like option -R of ssh command.
  the given port on the remote host will be forwarded to the given host
  and port on the local side.	
