J2SSH Maverick 1.7.34 - Nov 2, 2020

Features
  o Debug option for logging verbose signature information.
  o Changed ed25519 implementation to BouncyCastle via JCE interfaces (this is dependent on BouncyCastle internals and is not currently compatible with other JCE ed255129 implementations).
  o ComponentManager.reset method added for resetting ComponentManager configuration after startup.
  
Bug Fixes
  o Re-throw processed exception in processManagedSecurityException if the exception does not match a known workaround status code.
  o Passing SSH1 key with OpenSSH format incorrectly generates an SSH2 format key*
    
* This release requires the use of maverick-common 1.4.7 dependency

--------------------------------

J2SSH Maverick 1.7.33 - Aug 27, 2020

Features
  o Methods in SshConnector relating to version selection have been deprecated ahead of SSH1 being removed from the API in a future release.
  o Now supports ECDSA and ED25519 in PuTTY private keys.
  o Now supports ED25519 in OpenSSH certificate files.
  o Supports generation of OpenSSH certificate files.
  o Detection of common issues is now applied to all connection attempts, not just managed security. 
  o SshDiagnostics class now has getRemoteConfiguration method returning negotiated algorithms and security level, as well as the maximum security level possible with the remote server based on advertised algorithms.
  o Replaced ORO text matching with built-in java.text matching implementation removing the need for ORO dependency.
 
Bug Fixes

  o Made KnownHostsKeyVerification backward compatible with older AbstractKnownHostsKeyVerification implementation for an easier transition.
  o KnownHostsKeyVerification incorrectly drops invalid key entries when saving files.
  o TransportProtocol does not consult ignored algorithm list when making the final selection.
  o Add debug level log to indicate when SshConnector temporarily sets socket timeout during remote identification exchange.
  o Some versions of OpenSSH have problems with AES cipher in GCM mode causing EOF during key exchange. Added workaround to issue detection code to remove cipher and retry the connection.
  o KnownHostsKeyVerification onHostKeyMismatch is not called and instead onUnkownHost 

--------------------------------

J2SSH Maverick 1.7.32 - July 12, 2020
    
Bug Fixes
  o DSA/RSA key generation is restricted to 1024 bits or higher*
  o Ensure the disconnection of socket transport in SshConnector finally block when an error occurs.
  o New OpenSSH format keys generated by previous versions of the API are missing comment field causing EOFException.
  o SshConnector should throw the last error if its a SshException rather than wrapping it in another SshException.
   
* This release requires the use of maverick-common 1.4.5 dependency

--------------------------------

J2SSH Maverick 1.7.31 - June 3, 2020

IMPORTANT NOTICE
****************
This release restricts RSA keys in authentication to 1024 bits or greater. If you attempt to authenticate with a key with < 1024bits the API will automatically reject the authentication request. If you need to disable this you must contact Jadaptive technical support for further advice.

Bug Fixes
    o DH initialization should set the preferred size of private exponent instead of using JCE default to improve key exchange performance.
    o Fixed Java 7 compile and use issues.

--------------------------------

J2SSH Maverick 1.7.30 - May 14, 2020

Features
    o Added com.maverick.ssh.SshDiagnostics main class for support diagnostic utility. The class will probe and report connectivity status against all the available server configurations.
    
Bug Fixes
    o Priority value that helps determine the security level of each component not stored correctly in AbstractHmac causing algorithms within each SecuirtyLevel to have incorrect order*
    o Deprecated Ripe160 HMAC due to various issues seen in support. It was also deprecated by OpenSSH in version 7.6.
    o Dropping security level as a last resort reconfigures component factory but fails to reconnect.
    o Timeout value in some areas not passed to the transport layer when running in single-threaded mode.
    o RSA KeyFactory and Cipher specifications are not able to use separate JCE Providers.
    o Add exception cause to errors thrown by AES GCM implementations.
    o SshPublicKeyFileFactory allows SSH1 public key to be formated as an SSH2 public key.
    o Potential fix for JSafe AES/GCM mode throwing invalid IV exception.
    o Excessive CPU usage caused by SecureRandom re-seeding due to some areas not using shared PRNG.
    
* This release requires the use of maverick-common 1.4.3 dependency which is included in this release.

--------------------------------

J2SSH Maverick 1.7.29 - Mar 24, 2020

Features
    o Further improvements to managed security mode to prevent algorithm order and removal.
    o Added logic to retry alternative key exchange and preference configurations in the event of detectable compatibility issues with other software. 

Bug Fixes
    o SshConnector fails to reset state causing possible OOM when attempting to connect to SSH1 server after failing to connect using SSH2.
    o ScpClient accepts directory directive from server when it did not expect or request one.

Upgraded compile dependency of BouncyCastle to 1.64
Upgraded compile dependency of SLF4J to 1.7.30

--------------------------------

J2SSH Maverick 1.7.28 - Mar 10, 2020

Features
    o Implemented last resort drop in security level when algorithms cannot be negotiated.
    o Downgrade all use of RSA with SHA1 to WEAK security level.
    o Added copy-data, make-temp-folder, get-temp-folder, home-directory, hardlink@openssh.com and statvfs@openssh.com SFTP extensions.
    
Bug Fixes
    o ssh-ed25519 keys generated by API produce invalid signatures during user authentication.
    o Incorrect block size for chacha20 cipher causes delay in processing of small transport messages.
    o SshConnector does not default minimum security level to that configured on default ComponentManager.
    o Ignore disabling of non-standard algorithms when security level is PARANOID.
    o Do not allow setting of preferences in managed security instances (if you need preferences then don't use managed security).

--------------------------------

J2SSH Maverick 1.7.27 - Feb 5, 2020

Features
    o All algorithm listings are now ordered according to the security level they provide, ensuring the API advertises the strongest security in it's preferences. 
    o Default algorithm preferences updated to reflect the most secure option currently available.
    o Added chacha20-poly1305@openssh.com cipher from OpenSSH specifications.
    o Added curve25519-sha256 key exchange from IETF specification https://tools.ietf.org/html/draft-ietf-curdle-ssh-curves-08
    o Implemented a set of "Security Levels" that allow the API to be configured for WEAK, STRONG and PARANOID security.
    o Added new managed security mode automatically retries failed key exchange to find a suitable compatible configuration.
    c Implemented custom SFTP extension open-directory-with-filter@sshtools.com allowing a directory to be read with a glob or regex filter applied so that only specific results are returned in client directory listing. Requires use of new ls method with filter String parameter, and must be connected to the same version Maverick SSHD (or greater).
    o Support for SSH_MSG_EXT_INFO defined in draft https://tools.ietf.org/html/draft-ssh-ext-info-05 to allow notification of support for rsa-sha2-256 and rsa-sha2-512 signature types from server.
    o Use SHA-256 or SHA-512 signatures for RSA keys if the server supports the signature types.
    o Support for posix-rename@openssh.com SFTP extension. 
    o Support for copy-file SFTP extension to copy one remote file to another.
    o Support for MD5 hash of remote file using md5-hash and md5-hash-handle extensions.
    o Added getCertificateAndKey method to SshKeyUtils to retrieve authentication ready key pair containing private key and associated OpenSSH certificate file. 
    o Added new append methods to SftpClient for appending data to remote files.
    o Added OPENSSL_FORMAT key type for generating standard PEM keys using SshKeyPairGenerator (requires BouncyCastle PKIX).  
    o SshPublicKey interface now supports getJCEPublicKey method to access JCE component (unsupported for ed25519 keys).

Bug Fixes
    o Removed support for authenticating over SSH2 with SSH1 style RSA keys.
    o Fixed OpenSSH certificate authentication when authenticating against OpenSSH servers.
    o Signature validation is bypassed if no HostKeyVerification instance is configured causing connection error rather than invalid signature message to be output.
    o Keys generated by API and saved in new OpenSSH format generated invalid format errors when parsed with ssh-keygen. 

--------------------------------

J2SSH Maverick 1.7.26 - Dec 13, 2019

Bug Fixes
    o SFTP transfers fail in DEBUG mode due to bad string format in a new debug statement

--------------------------------

J2SSH Maverick 1.7.25 - Dec 3, 2019

Features
    o Added com.maverick.ssh.SshReporter main class for use as a basic diagnostic support tool to diagnosing SFTP, SCP and Algorithm Negotiation issues. Simply run and enter host, username, and password at the prompts to generate a report.
    o Removed support for hmac-sha256@ssh.com and hmac-sha512@ssh.com. This non-standard algorithm has been implemented incorrectly by many vendors causing connectivity problems with our clients. If you need to continue to use these enable them with the system property -Dmaverick.hmac-sha256@ssh.com=true

Bug Fixes
    o FileTransferProgress incorrectly reports the entire file length on resume.
    o BC/BCFIPS private key implementation does not support older style OpenSSL PKCS8/PBKDF encrypted keys*
    o Resuming put incorrectly writes all data to end of file ignoring the position value passed.
    o SshIOException error message is not set from passed SshException.
    
*Requires upgrade to maverick-common 1.3.13 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.24 - Aug 19, 2019

Bug Fixes
    o Upgraded JZLIB dependency version to 1.1.3 after reports of issues in production with previously distributed version 1.1.2.

--------------------------------

J2SSH Maverick 1.7.23 - Jul 17, 2019

Features
    o Improved SshKeyFingerprint options to allow optional fingerprint generation based on Base64 or Hexidecimal encoding*

Bug Fixes
    o OpenSSH agent server fails to encode signature correctly according to flags passed by ssh client.
    o Execute channel open request off the main message pump and instead place on the configured executor.
  
*Requires upgrade to maverick-common 1.3.11 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.22 - May 3, 2019

Bug Fixes
    o Usage of SecureRandom.getInstanceStrong causes hung process on systems with little randomness*
    
*Requires upgrade to maverick-common 1.3.10 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.21 - Mar 25, 2019

Features
    o New SftpClient ls methods with maximum files parameter to restrict the number of returned files. The versions of these methods without specifying the maximum files are now deprecated in favor of these and lsIterator method introduced in the previous release. 
    o New SftpClient constructors that allow a message timeout value to be passed.
    
Bug Fixes
    o Log local identification sent immediately after its sent rather than waiting for remote identification.
    o changePositionofAlgorithm throws IndexOutOfBoundsException when presented with an algorithm that is not in the list*
    o Channel can send duplicate EOF if it's OutputStream close method is called multiple times.
    o Enabling BouncyCastle JCE does not configure separate Diffie Hellman algorithms causing an alternative provider to be selected*
    o New KnownHostsKeyVerification implementation fails on invalid entry.
    o Workaround for KEX protocol violations caused when a remote server sends a non-transport packet during key exchange.
    o Added correct handling for SSH_MSG_UNIMPLEMENTED with option maverick.failOnUnimplemented system property flag (used in testing).
    o Guard against NullPointerException in ForwardingClient stopLocalForwarding and cancelRemoteForwarding.
       
*Requires upgrade to maverick-common 1.3.9 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.20 - Jan 22, 2019

Features 
    o Support for ECDSA, RSA and DSA keys in new OpenSSH private key file format. Keys generated by the API will now default to this format when written*
    o Support for BubbleBabble type fingerprint in SshKeyUtils and SshKeyFingerprint*
    o Added lsIterator and lsIterator(path) methods to SftpClient to help reduce memory footprint when processing large directories.
    
Bug Fixes
    o To prevent connectivity problems bypass JCE to perform DH calculations manually if the server sends a P value with a bit length that is not a multiple of 64*
    o Ensure that an algorithm can still be used by other algorithms that depend on it even if it is removed from preferences e.g. ssh-rsa is required by rsa-sha2-256 and rsa-sha2-512*
    o ECDSA public key implementation of equals returns false even though public keys are the same*
    o ECDSA signature verification handling fixed to improve detection of SSH style signature*
    o Added additional protection to ensure a bad SCP server cannot write outside the target download directory.
        
*Requires upgrade to maverick-common 1.3.8 which is included in this release. 

--------------------------------

J2SSH Maverick 1.7.19 - Nov 21, 2018

Features
    o Added new methods to SshKeyUtils for the collection of a server's host key or all its configured keys. 
 
Bug Fixes
    o Added missing constants in Ssh2Context for new key exchange mechanisms and ssh-ed215519.
    o Increased default key re-exchange thresholds.
    o DynamicBuffer InputStream incorrectly returns negative value indicating EOF in single byte read operation*
    o Improved logging in KBIAuthentication.
    
*Requires upgrade to maverick-common 1.3.7 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.18 - Oct 8, 2018

Bug Fixes
    o Client deadlocks when receiving hostkeys-00@openssh.com request in threaded mode.

--------------------------------

J2SSH Maverick 1.7.17 - Oct 7, 2018

Features
    o Added KnownHostsKeyVerification as a complete new HostKeyVerification implementation of the file protocol implemented by OpenSSH with wildcard support, @revoked and @cert-authority entries and the ability to maintain the order of the keys within the file as it found them, including blank lines, comment lines and host key comments.
    o New KnownHostsFile implementation of KnownHostsKeyVerification for abstract management of known_hosts. This should replace AbstractKnownHostsKeyVerification which has now been deprecated.
    o New ConsoleKnownHostsFile implementation of KnownHostsFile for abstract management of known_hosts. This should replace ConsoleKnownHostsKeyVerification which has now been deprecated.
    o Support for hostkeys-00@openssh.com for automatic updating of host keys in conjunction with KnownHostsKeyVerification / KnownHostsFile.
    o Support for Windows Named Pipes in SshAgentClient allowing Windows ssh-agent service to be utilised as an authentication source.
    o Full support for ssh-ed25519 keys including key generation and new OpenSSH private key format with aes/bcrypt encryption*
    o Enable PrivateKey to be used to create an RSA key. This allows the use of keys from a PKCS11 provider.
    o Support for RSA key exchange rsa2048-sha256 and rsa1024-sha1*
    o Support for curve25519-sha256@libssh.org key exchange*
    o Support for rsa-sha2-256 and rsa-sha2-512 public key types for alternative RSA signatures*
        
Bug Fixes
    o Remove dependency on log4j from SshAgentServer.
    o Agent KeyStore interface does not return state for deleteAllKeys operation.
    o NullPointerException is possible on ForwardingClient.SocketListener when stopping active client.
    o Added additional verbose output when loading private keys to ensure exception is logged if required. Set -Dmaverick.verbose=true if instructed by support.
    o Ensure comment is blank rather than null to avoid extra whitespace at the end of OpenSSH public key file*
    o ed25519 implementation depends on BouncyCastle Arrays utility. 
    o Ensure when reading from Inputstream for SFTP put that the block size required is adhered to.
    o Re-factored SftpFileAttributes to remove reference to the SftpSubsystemChannel that created it.
    o Agent should create Ssh2RsaPrivateCrtKey from parameters otherwise the key cannot be stored in OpenSSH key file.
    o Use system default PRNG unless specifically overridden algorithm is set on JCEProvider.
    o SpongyCastle support should be explicitly requested using enableSpongyCastle method on JCEProvider. 
    
*Requires upgrade to maverick-common 1.3.6 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.16 - Jun 29, 2018
 
Features
    o Added helpful constructors to PublicKeyAuthentication to allow SshKeyPair, InputStream, String or File private keys to be passed.
    o Support for ssh-ed25519 host keys*
    
Bug Fixes
    o Load and test key exchanges individually to ensure previous version of maverick-common does not fail on loading all key exchanges*
    o Failed to use correct ECDSA algorithm name when using SC JCE provider.
    o Fixed source build files.
    
*Requires upgrade to maverick-common 1.3.5 which is included in this release.
*New dependency added "net.i2p.crypto/eddsa" for ssh-ed25519 support

--------------------------------

J2SSH Maverick 1.7.15 - May 24, 2018

Features
    o More detailed SFTP logging in at DEBUG level. 
    
Bug Fixes
    o Recent fix for low window space and deferral of SFTP read requests can cause performance issue in GET on latent network. Set -Dmaverick.enableSFTPReadWindowSpaceFix=true to enable previous behavior.
    o Shell hangs when echo command is not supported in remote terminal.
    o Improvements to agent implementation.
    o Fixed bug in SshKeyUtils.encrypt method.
    o Refactored SftpClient get to utilise max async requests correctly. 
    o Do not attempt to configure socket send/receive buffers as this can potentially affect performance in some circumstances/environments.

--------------------------------

J2SSH Maverick 1.7.14 - Apr 23, 2018

IMPORTANT: BouncyCastle has been upgraded to 1.59 in this release to resolve a vulnerability in the 1.52 version [CVE-2017-13098]*

Features
    o Ability to configure Diffie Hellman algorithm Provider separately for KeyFactory, KeyAgreement and KeyPairGenerator*
    o Additional method on JCEProvider to configure Provider using name rather than Provider instance*
    o Support for diffie-hellman-group14-sha256, diffie-hellman-group15-sha512, diffie-hellman-group16-sha512, diffie-hellman-group17-sha512 and diffie-hellman-group18-sha512
    o Improved algorithm support for FIPS mode (ECDH, ECDSA and stronger key exchange methods).
    o Added option to disable SFTP block size optimisation with -Dmaverick.disableBlocksizeOptimization=true 
    o Automatic configuration/support for SpongyCastle JCE provider as a replacement for BouncyCastle on Android.
    
Bug Fixes
     o Preempt SSH2 connection in initial identification exchange and handle error if remote server does not support.
     o Prevent ConcurrentModificationException in ForwardingClient stopAllLocalForwarding methods.
     o Added default timeout of 60 seconds for any global request.
     o DSA private key signature encoding intermittently fails to generate compatible signature.
     o Preempt authentication in HttpsProxyTransport.
     o Some methods in ForwardingClient were not synchronized making it unsafe for multiple thread access.
          
*Requires upgrade to maverick-common 1.3.3 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.13 - Jan 26, 2018

Features
    o Ability to disable algorithms at runtime using -Ddisable. system property*

Bug Fixes
     o Expected RSA signature length calculation used for padding incorrect; added additional fallback to original signature if padded signature fails*
     o Ensure fired events are logged in standard debug log*
     
*Requires upgrade to maverick-common 1.3.2 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.12 - Dec 22, 2017

Bug Fixes
     o Fix for non-RFC X509 signature encoding (compatibility with Tectia)*
     o Prevent ExecutorOperationSupport from pausing for 1 second during connection shutdown*
     o Upgrade use of commons-vfs in SFTP provider to fix various memory issues caused by commons-vfs2.
           
*Requires upgrade to maverick-common 1.3.1 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.11 - Nov 23, 2017

Bug Fixes
     o Full support for BCFIPS JCE Provider

*****************
IMPORTANT COMPATIBILITY INFORMATION

This release requires the use of maverick-common 1.3.0 dependency which is included in this release. When using both
client and server APIs in the same JVM you MUST use client and server versions compatible with 1.3 maverick-common.
*****************

--------------------------------

J2SSH Maverick 1.7.10 - Oct 23, 2017

Bug Fixes
     o Support for licenses encoded in ISO-8859-1
     o ecdh-sha2-nistp521 broken*
     o Java 8u121 DSA signature validation fixes cause intermittent validation failures.

*Requires upgrade to maverick-common 1.2.9 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.8 - Jul 17, 2017
 
Features
     o Added RSA encrypt/decrypt utility methods to SshKeyUtils.

Bug Fixes
     o Check for disconnect error after complete file transfer and consume exception to avoid confusion.
     o ECUtils does not use configured JCEProvider for EC algorithm*
     o SftpSubsystemChannel incorrectly defaults to performing verification of file using extension mechanism.
     o License configured with LicenseManager.addLicense could potentially be in an encoding other than UTF-8.
 
*Requires upgrade to maverick-common 1.2.8 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.7 - Jun 13, 2017
 
Bug Fixes
     o Valid OpenSSH key does not pass format tests*

*Requires upgrade to maverick-common 1.2.7 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.6 - Jun 5, 2017
 
Features
    o Implementation of OpenSSH certificates to support user authentication via signed certificate file as defined at https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?annotate=HEAD
    o Improvements to Shell implementation to detect incorrect password, better support for periodic password sudo prompt.
 
Bug Fixes

     o Removed erroneous System.out in OpenSSHPrivateKeyFile.toKeyPair.
     o Enterprise distribution now includes -sources jar files.
     o Java 8 u121 introduces regression in DSA key signature validation.
     o If BouncyCastle PKIX loading of private key fails with EncryptionException revert to original private key format implementation.*
     o SshPublicKeyFileFactory#parse allows non IO error to be propagated*
     o Disabled CBC ciphers cause private key encryption failures*
     o Client events have no reference back to generating SshClient.
     o Missing failed EVENT_KEY_EXCHANGE_COMPLETE event.
     o Prevent multiple license to log statements when multiple SshConnector instances are used.
     o Incorrect calculation of signature size causes RSA signature validation errors*
     o Provide hint as to why we received a zero length packet in error when compression is enabled.
        
*Requires upgrade to maverick-common 1.2.6 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.5 - Mar 24, 2017

Features
    o Added Ssh2Client protected method createTransportProtocol to allow custom implementations to create their own TransportProtocol instance.
    
Bug Fixes
     o Error log in diffie hellman implementations does not log correct exception.
     o Ant source build using incorrect source and target values. 
     o SshAgentClient requires object with Closable contract to ensure channel or Socket is closed correctly when agent is closed.
     o Some dependencies on BouncyCastle classes were removed.
     o AbstractKnownHostsKeyVerification and AbstractMultipleKnownHostsKeyVerification miss validation when passed hostname matches but FQDN and IP are not resolved.
     o Added missing drain method in ShellProcess.
     o Changes/improvements to support BouncyCastle FIPS certified JCE Provider
     o Further fixes to RFC 6187 X509 implementation
    
*Requires upgrade to maverick-common 1.2.5 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.4 - Feb 22, 2017
 
Features
     o Added commandExecuted, shellClosed, subsystemClosed, keyExchangeComplete methods to SshClientListener and associated SshClientAdapter.
     o Added SshKeyUtils utility class to help with loading public keys.
     
Bug Fixes
     o Fixed certificate chain and signature encoding inline RFC 6187 X509 implementations*
     o ECDSA X509 implementations not registered correctly*
     o EC and ECDH use default system JCE provider even if separate default provider is configured in API. 
     
*Requires upgrade to maverick-common 1.2.4 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.3 - Feb 3, 2017
 
Bug Fixes
    o Channel available method exception causes truncation problem with BufferedInputStream.
    o Processing SSH_MSG_DISCONNECT causes SshException. 
    o Re-ordered default key exchange listing by order of strongest security preference.* 
  
Requires upgrade to maverick-common 1.2.3 which is included in this release.

--------------------------------

J2SSH Maverick 1.7.2 - Jan 5, 2017

Features
    o Implemented md5-hash and md5-hash-handle extensions as part of get operation (these were the original extensions defined in draft-ietf-secsh-filexfer-09.txt before draft-ietf-secsh-filexfer-extensions-00.txt replaced them with check-file-name and check-file-handle).
    
Bug Fixes
    o Missing events for CONNECTED and DISCONNECTED.
 
Requires upgrade to maverick-common 1.2.2 which is included in this release.

--------------------------------

J2SSH Maverick 1.6.25 - Dec 12, 2016

Bug Fixes
    o Workaround added to fix broken GlobalScape server that responds to default dir request with file not found.
    o ChannelInputStream available incorrectly consumes EOFException.
    o Deprecated partial message timeout to prevent excessive socket option chatter. Reason for use is no longer valid with introduction of socket timeout support in 1.6.0.
    o Missing events for CONNECTED and DISCONNECTED.
    o Attribute ATTRIBUTE_HOST_KEY deprecated because it used unsafe encoding to String for a binary object. ATTRIBUTE_HOST_PUBLIC_KEY replacement provides a SshPublicKey instance for the key.
 

--------------------------------

J2SSH Maverick 1.6.24 - Nov 4, 2016

Features
    o Ssh2Client getHostKey method to retrieve the host key of the server.

Bug Fixes
    o SHA256 public key fingerprint is not compatible with OpenSSH fingerprint*
    o OpenSSH public key file cannot be parsed with CR or NL in the encoded Base 64 blob*
    o Better handling of rejected executor task required.
    o HttpProxySocket not sends Bad Request in response to 407 Proxy Authentication Required response. 
     
* Requires upgrade to maverick-common 1.1.12 which is included in this release.

--------------------------------

J2SSH Maverick 1.6.23 - Oct 7, 2016

Features
    o New AuthorizedKeyFile implementation enables parsing of authorized_key files with full support for all OpenSSH options as documented at http://man.openbsd.org/sshd.8*
    
Bug Fixes
    o ChannelInputStream available not consistent with InputStream contract.
    o Fixed NPE in Event getAllAttributes*
    o Algorithm name in SECSH public key file causes NPE when parsed by SshPublicKeyFileFactory*
    o AbstractKnownHostsKeyVerification would fail if @revoked or @cert-authority is present in known_hosts file.

* Requires upgrade to maverick-common 1.1.11 which is included in this release.

--------------------------------

J2SSH Maverick 1.6.22 - Sept 2, 2016

Features
    o Options added to Ssh2Context that allow disabling of ETM (encrypt-then-mac) and non standard algorithms such as @openssh.com and @ssh.com algorithm implementations.

Bug Fixes
    o PuTTY private key file should use AES CBC cipher directly and not use supported ciphers ComponentFactory.*
    o Key derivation function creates incompatible key when key exchange hash function output is smaller than required key.
    o Remote identification without additional software version causes connection exception.
    
IMPORTANT NOTICE: This version requires maverick-common 1.1.9 and cannot be used with earlier versions of maverick-common jar file.

--------------------------------

J2SSH Maverick 1.6.21 - Aug 9, 2016

Features
    o Added stripEOL property to SftpClient to instruct the client to strip and replace all EOL type characters in favour of the system EOL (get) or remote EOL (put).
    
Bug Fixes
    o Width/Height parameters written in the wrong order in Ssh2Session changeTerminalDimensions.
    o Event object cannot handle null attributes.*
    o Diffie hellman key exchanges do not enforce validity of generated or server supplied algorithms.
    o When in buffered mode queued packets from key exchange should not be placed on the executor.
    
* Requires upgrade to maverick-common 1.1.8 which is included in this release. 

--------------------------------

J2SSH Maverick 1.6.20 - July 14, 2016

Features
    o Ssh2Client now has a number of get methods to return String array of remote algorithm lists.
    
Bug Fixes
    o Ability to set pseudo block timeout using system property -Dmaverick.pseudoBlockTimeout=1000. Only use if directed by support.
    o hmac-sha256@ssh.com should use 32 byte output but 16 byte key*

* Requires upgrade to maverick-common 1.1.7 which is included in this release.  

--------------------------------

J2SSH Maverick 1.6.19 - June 23, 2016

Bug Fixes
    o Additional method signature of openDirectory added to SftpSubsystemChannel to support disabling of attribute checks to allow custom Dovetail SFTP commands to be executed against remote server.
    o AbstractKnownHostsKeyVerification hashes hostname even if it had been previously hashed causing problems with key verification.
    o Skip options in OpenSSH public key file could cause IndexOutOfBoundsException.*
    
* Requires upgrade to maverick-common 1.1.6 which is included in this release. 

--------------------------------

J2SSH Maverick 1.6.18 - Jun 2, 2016

Bug Fixes
    o Prevent EOFException when processing bad SSH_FXP_STATUS packet from SSH-2.0-Go server.
    o Added remoteIsDir (-d) option to ScpClientIO.
    o Changed default host key preference to ECDSA key.

--------------------------------

J2SSH Maverick 1.6.17 - May 19, 2016

Features
    o Extended agent implementation to support OpenSSH ssh-agent supporting list keys, hash and sign, lock, unlock. http://www.opensource.apple.com/source/OpenSSH/OpenSSH-142/openssh/PROTOCOL.agent
    o Added AgentSocketForwardingChannel and AgentForwardingChannelFactory for agent forwarding support.

Bug Fixes
    o Prevent disconnected event in SshClientListener from being generated more than once per connection.
    o Ssh2Channel sendRequest does not pass its isActivity value to ConnectionProtocol sendMessage.
    o SSHCOM private RSA keys fail to authenticate*
    o Skip options in OpenSSH public key file.*

* Requires upgrade to maverick-common 1.1.5 which is included in this release.  

--------------------------------

J2SSH Maverick 1.6.16 - Mar 30, 2016

Features
    o SshClient now supports storing attributes for variables connected with the current ssh connection. 
    o Added SshClientListener interface for general callback of useful client events such as authenticated, executedCommand, startedShell etc.
    o Added SshClientAdapter to allow cut down implementation of SshClientListener
    o SshSession getTerm method added. Returns the terminal type of any pseudo terminal successfully attached to the session. May return null.
    
Bug Fixes
    o SftpClientFactory in Maverick VFS provider includes missing StringUtils dependency.
    o Fix to filter erroneous banner/message can go into infinite loop. 
    o EOLProcessor duplicates character if stray CR is found when processing CRLF*
    o Missing SshClient and SshSession attributes from session events.
     
* Requires upgrade to maverick-common 1.1.4 which is included in this release.

--------------------------------

J2SSH Maverick 1.6.15 - Mar 14, 2016

Features
    o Initial implementation of SSH agent and agent authentication mechanism https://tools.ietf.org/html/draft-ietf-secsh-agent-02. See AgentKeyConnect.java for example.
    
Bug Fixes
    o Dynamic buffer fails to resize to required size causing ArrayIndexOutOfBoundsException.
    o Filter erroneous banner/message from incorrectly configured server during SFTP subsystem startup.
    o Try to honor write size in SSH2 channel output stream by looking for window space before it runs out.
    o Missing constraint in performOptimisedWrite causes entire file to be written to server without any concern for async requests setting.
    o Incorrect packet length displayed in error message when maximum packet length is exceeded.

--------------------------------

J2SSH Maverick 1.6.14 - Jan 29, 2016

Bug Fixes
    o Fixed public key authentication support to Commons VFS SFTP provider.
    o Javadocs were not included in the zip distribution.

--------------------------------

J2SSH Maverick 1.6.13 - Jan 13, 2016

Features
    o Adding missing methods to manipulate extended file attributes on SftpFileAttributes.
    o Increased session channel maximum channel packet to 34000 bytes.
    o Improved JCEComponentManager startup to ensure existing BC provider does not prevent DH algorithm configuration.*
    o Improved JCEComponentManager startup logging.*

* Requires upgrade to maverick-common 1.1.2 which is included in this release.

--------------------------------

J2SSH Maverick 1.4.59 - Jan 13, 2016

Bug Fixes
    o Update shared DiffieHellmanGroups class to provide consistent classpath when jvm is shared with Maverick SSHD.

--------------------------------

J2SSH Maverick 1.6.12 - Dec 10, 2015

Bug Fixes
    o diffie-hellman-group-exchange methods fail test with NPE when backwards compatibility is disabled.*
    o Disabled backwards compatibility on diffie-hellman-group-exchange key exchange methods due to deprecation by OpenSSH.
    o x509v3-ecdsa-sha2-nistp384 and x509v3-ecdsa-sha2-nistp521 typos in JCEComponentManager registration.*
    
* Requires upgrade to maverick-common 1.1.1 which is included in this release.

--------------------------------

J2SSH Maverick 1.6.11 - Oct 29, 2015

Bug Fixes
    o Removed use of trim in SFTP/SCP paths to ensure trailing spaces are valid in filenames.
    o maverick-dynamic-forward.jar and maverick-vfs-ssh.jar were incorrectly included in the -all.jar builds. As optional components these should not have been present. They are now distributed as separate jar files.

--------------------------------

J2SSH Maverick 1.4.58 - 10 Nov, 2015

Bug Fixes
    o ForwardingClient getLocalForwardingTunnels returns nothing for stopped local forwardings even though forwarding was stopped with killActiveTunnels=false
    o ForwardingClient incorrectly initializes channel with wrong window space and packet length values.
    o SftpOutputStream continues to process packets after error causing long delay in closing OutputStream.
    o SFTP channel only has 32k of window space for session based channels.
    o Increase maximum size of supported SFTP packet to 32k.
    o openSessionChannel now has 60 second timeout.

--------------------------------

J2SSH Maverick 1.6.10 - Sept 14, 2015

Features
    o Optimization on SFTP block size so that it takes into account subsystem and SFTP packet overhead to ensure each SSH_MSG_CHANNEL_DATA packet fully utilize the channels maximum packet length.
    o Support for hmac-ripemd160, hmac-ripemd160-etm@openssh.com message authentications.
    o Support for Encrypt then Mac message authentications hmac-md5-etm@openssh.com, hmac-sha1-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com
    
Bug Fixes
    o Session using startShell is still logging commands which should only be logged if maverick.verbose property is set.
    o ECDSA keys cannot be loaded if another JCE exists that processed EC keys and has a higher priority in security configuration*
    o ECSDA public key compare using equals fails even when they represent the same public key*
    o Key exchange synchronization potentially causes deadlock.
    o Window size defaults changed, session channel for shell/command has smaller window size 128k + 32k packet. SFTP has 2G window size and slightly larger than 32k to prevent 32k data packets being fragmented by the connection protocol.
    o Prefer keyboard-interactive flag would not check if keyboard-interactive was actually supported.
    o Ensure enough key data is available for the size of the cipher or mac*
    o Handle IOException/EOFException from local stream as non-fatal cancellation of transfer. Throw TransferCancelledException to indicate state to calling application.
    o Removed erroneous code from ScpClient.
    o SftpStatusException message includes status code translation and message from server. Only show both if the strings do not match.
    
* Requires upgrade to maverick-common 1.1.0 which is included in this release.

*****************
IMPORTANT COMPATIBILITY INFORMATION

For users combining both our client and server APIs in the same classpath you should ensure that both versions of the API used are compatible with a maverick-common version of 1.1.0.
If for any reasons you just use a single product and ship the individual jar files you should ensure you ship the maverick-common 1.1.0 version included in this release.
*****************

--------------------------------

J2SSH Maverick 1.4.57 - 7 May, 2015

Bug Fixes
	o HttpProxyTransportWrapper tries to connect to endpoint server rather than proxy server.
	o HttpProxyTransport fails with Bad Request when attempting authentication.

--------------------------------

J2SSH Maverick 1.6.9 - May 15, 2015

Bug Fixes
    o Fixed Enterprise Edition broken source build.
    o Removed printStackTrace and instead added warn level log on reflection error when attempting to load newer implementation of OpenSSHPrivateKeyFile that depends on Bouncycastle PKIK.
    o Log missing BC dependency rather than printStackTrace.*
    o ForwardingClient getLocalForwardingTunnels returns nothing for stopped local forwardings even though forwarding was stopped with killActiveTunnels=false.
    o Optional Bouncycastle dependencies upgraded to version 1.52
    
* Requires upgrade to maverick-common 1.0.9 which is included in this release. 

--------------------------------

J2SSH Maverick 1.6.8 - Mar 24. 2015

Bug Fixes
    o Automatic conversion to keyboard-interactive should not subsequently perform password if password auth is not available.
    o Fixed NullPointerException on API startup caused by licensing code in some JVM environments.
 

--------------------------------

J2SSH Maverick 1.6.7 - Feb 24, 2015

Bug Fixes
    o JCE expects a padded RSA signature but protocol allows client to send unpadded resulting in random authentication failures.
    o SftpFileAttributes is checks wrong variable to determine if access time nano seconds is present resulting in NullPointerException.
    o The Maverick Commons VFS implementation closes SshClient before OutputStream created to transfer file is completed.
    o Idle connection hangs if JVM socketWrite method blocks because it cannot send disconnect message. Treat idle connection as error condition. Optional setting added to Ssh2Context to revert this behavior.
    o Ssh2Client openSessionChannel default method is not using Ssh2Context settings for window space or maximum packet size.
   	o SshClient getChannelCount returns +1 channels as closed channel still exists in list when listener event is fired.
   	o Default SFTP block size too restrictive.
   	o SshPrivateKeyFileFactory fails to load encrypted EC private key when no passphrase is passed initially to factory.

* Requires upgrade to maverick-common 1.0.8 which is included in this release.

--------------------------------

J2SSH Maverick 1.4.56 - Feb 24, 2015

Bug Fixes
	o JCE expects a padded RSA signature but protocol allows client to send unpadded resulting in random authentication failures.
	o Idle connection hangs when socketWrite blocks due to network issues. Idle connections are now treated as error condition with no disconnect message sent. Option to revert this behavior added to Ssh2Context.
	o SshClient getChannelCount returns +1 channels as closed channel still exists in list when listener event is fired.


--------------------------------

J2SSH Maverick 1.6.6 - Jan 12, 2015

Features
    o Prefer keyboard-interactive over password authentication.
    
Bug Fixes
    o SOCKS proxy transport fails to connect to proxy server.
    o ThreadSynchronizer does not guarantee exclusive lock to the message pump when threaded/buffered mode client is in use.
    o Ssh2Session incorrectly defaults to sending keep-alive packets, keeping session open and not honoring idle connection time.
    o Buffered mode client idle disconnect does not propagate to other blocked threads.
    o Shell fails to detect *nix type environment.
    o Ssh2Session should only log session input/output in maverick.verbose mode.
    o Ability to order ciphers, macs, key exchanges etc by passing String array of preferred order.

--------------------------------

J2SSH Maverick 1.4.55 - Jan 8, 2015

Bug Fixes
	o Exception thrown when an attempt is made to install two different licenses.

--------------------------------

J2SSH Maverick 1.6.5 - Sept 23, 2014

Bug Fixes
    o Removed erroneous output from JCEComponentManager startup*
    o OpenSSH private key format made library always depend on Bouncycastle JCE provider and associated libs.
    o SftpClient now only applies umask on files and folders if explicitly set by calling umask method.
    
* Requires upgrade to maverick-common 1.0.6 which is included in this release. 

--------------------------------

J2SSH Maverick 1.4.54 - Sept 24, 2014

Bug Fixes
	o Automatically attempt to add BouncyCastle JCE provider if found in classpath. If not installed, there may no large prime support for some Diffie Hellman algorithms.
	o ThreadSynchronizer does not guarantee exclusive lock to the message pump when threaded/buffered mode client is in use.

--------------------------------

J2SSH Maverick 1.6.4 - Aug 26, 2014

Features
    o Added hmac-sha2-512, hmac-sha2-512-96, hmac-sha2-256-96 mac algorithms*.
    o Added ecdh-sha2-nistp256, ecdh-sha2-nistp384 and ecdh-sha2-nistp521 key exchange algorithms*.
    o Added x509v3-rsa2048-sha256, x509v3-ecdsa-sha2-nistp256, x509v3-ecdsa-sha2-nistp384 and x509v3-ecdsa-sha2-nistp521 public key algorithms.*

Bug Fixes
    o HTTP / SOCKS proxy classes missing connection timeout support.
    o ExecutorService core threads never timeout. Default behaviour is now for core threads to terminate after 60s of idle.  
    o Added SshConnector static methods that allows internal ExecutorService to be configured with different values for core thread pool, max threads and timeout.
    o Added synchronization to license validation to prevent license validation issues under load.
    
* Requires upgrade to maverick-common 1.0.5 which is included in this release. 

--------------------------------

J2SSH Maverick 1.4.53 - Aug 19, 2014

Bug Fixes
    o HTTP / SOCKS proxy classes missing connection timeout support.
    o Added synchronization to license validation to prevent possible corruption of license information under load.
    o Ssh2Channel sendRequest incorrectly synchronizes on connection instance rather than channel instance.

--------------------------------

J2SSH Maverick 1.4.52 - Jun 11, 2014

Bug Fixes
    o Server disconnects and does not accept client connection when client identification string is sent optimistically.  
    o Last CR in file is not replaced in SftpClient text mode transfers.
    o jakarta-oro jar file missing from dependencies.

--------------------------------

J2SSH Maverick 1.6.3 - June 9, 2014

Features
    o Support for SFTP versions 5, 6 in SftpClient and SftpSubsystemChannel. Currently must be enabled by passing version number into constructor.

Bug Fixes
    o Upgraded BouncyCastle dependencies to 1.50 versions due to potential memory leaks created by the JCE library.*
    o Outgoing compression fails with ArrayIndexOutOfBoundsException.
    o Race condition causes Bad Packet exceptions after new keys are put into use.
    o performOptimizedWrite in SftpSubsystemChannel does not progress FileTransferProgress when appending to file.
    o performOptimizedWrite in SftpSubsystemChannel always writes to beginning of file ignoring position.

* Requires upgrade to maverick-common 1.0.4 which is included in this release.  

--------------------------------

J2SSH Maverick 1.6.2 - May 14, 2014

Features
    o Added support to Shell class for OpenVMS.
    o Added SshClientPool utility for efficient management of single threaded idle clients.
    o The host key verification process will treat servers running on separate ports as different servers as per other implementations. Added maverick.knownHosts.disablePortValidate system property to enable the disabling of this behavior and treat all servers on the same host as one server for host key validation purposes.
 	o Added support for ECDSA X509 certificates (RFC 6187).*
 
Bug Fixes
    o Improved error message when failed to generate a DH value.
    o Maverick VFS SSH would close a shared connection when FileObject.getOutputStream() was used. 
    o Server disconnects and does not accept client connection when client identification string is sent optimistically.  
    o Last CR in file is not replaced in SftpClient text mode transfers.*
    o Revert to 1.4 internal Rsa implementation for SSH1 server/host key processing due to incompatibility with JCE.*
    o Ssh2Client initializes port forwarding channel with non-optimal settings.
    
* Requires upgrade to maverick-common 1.0.3 which is included in this release. 

--------------------------------

J2SSH Maverick 1.4.51 - Mar 31, 2014

Features
    o Added acceptLocalForwarding method to ForwardingClientListener.

Bug Fixes
    o Potential memory leak fixed when using pooled SftpClients with non-pooled SftpClient instances.
    o Subsequent call to ForwardingClient.stopLocalForwarding with a key that had previously been used to stop listening but not kill active tunnels should kill any remaining tunnels if the killActiveTunnels flag is true.
    o Changed default cipher to aes128-ctr.
    o Added back processStandardData protected method of byte[],int,int to prevent backwards compatibility issues.
    o Socket timeout applied via use of Ssh2Context.setSocketTimeout is not applied until after identification exchange.

--------------------------------

J2SSH Maverick 1.6.1 - Jan 29, 2014

Features
    o Preliminary support for RFC 6187 X509 certificates for RSA and DSA public key algorithms. OSCP responses are currently not available or validated by the client if received.*
    o Added X509HostKeyVerification implementation for easier verification of X509 certificates.
    o Added HostKeyVerificationManager implementation to allow chaining of HostKeyVerification instances so that different verification types can be performed on a single connection.
    
Bug Fixes
    o Potential memory leak fixed when using pooled SftpClients with non-pooled SftpClient instances.
    o Ssh2Session incorrectly defaults send keep-alive packet on idle to true, causing connections to remain active when the expected result was a timeout.
	o Made SftpClient.matchRemoteFiles method public to allow wildcard searches to be performed on remote directory.
	o SftpFileInputStream calls getAttributes on file but its no longer needed.
	o umask not being applied to default file permissions when put through SftpClient.
    o Default cipher changed to aes128-ctr.
    o Added back utility to J2SSHEventCodes to get event name from id.
 
* Requires upgrade to maverick-common 1.0.2 which is included in this release. 

--------------------------------

J2SSH Maverick 1.4.50 - Nov 20, 2013

Bug Fixes
    o Ssh2Session incorrectly defaults send keep-alive packet on idle to true, causing connections to remain active when the expected result was a timeout.
	o Made SftpClient.matchRemoteFiles method public to allow wildcard searches to be performed on remote directory.
	o SftpFileInputStream calls getAttributes on file but its no longer needed.
	o umask not being applied to default file permissions when put through SftpClient.

--------------------------------

IMPORTANT NOTICE:

This is the first public release of the 1.6.x stable branch. Source code developed with versions 1.4.x or 
lower will not be binary compatible with this API although changes should be minimal as this new branch
is a continuation of the work of those branches and should be considered the stable successor to 1.4.x 
versions.

Please note that the internal cryptographic provider has been removed and as such all cryptographic
functions are provided by the installed Java Cryptography Extensions (JCE) in your environment. The minimum 
required version of Java is 1.5. 

J2SSH Maverick 1.6.0 - Oct 9, 2013

Features
    o Logging is now provided though SLF4J.
    o API is now built with and requires a minimum Java version of 1.5.
    o Build system changed to Maven.
    o Common components shared between client and server implementations have been moved to a separately versioned jar file to help compatibility between the two.
    o Internal cryptographic provider has been removed.
    o Added support for Elliptic Curve keys ecdsa-sha2-nistp256, ecdsa-sha2-nistp385 and ecdsa-sha2-nistp521.
    o New Shell implementation that uses begin/end markers for each command to extract output from the users shell.
    o Support for PKCS8 PEM encoded private keys (required BouncyCastle JCE provider installed)*
    o checkLocalSourceAddress method added to ForwardingClientListener to allow forwarding to be declined based on source address.

Bug Fixes
    o Ssh2Session incorrectly defaults send keep-alive packet on idle to true, causing connections to remain active when the expected result was a timeout.
    
* Requires upgrade to maverick-common 1.0.1 which is included in this release. 

--------------------------------

J2SSH Maverick 1.4.49 - Oct 5, 2013

Bug Fixes
    o Start of key exchange was not synchronized until SSH_KEX_INIT had been received allowing non key exchange message to be sent in error.
    o Support for larger N sizes in DSA key signatures allowing > 1024 bit DSA keys to be utilised.
    o Added hmac-sha2-256 algorithm to supported Hmacs
    o copyRemoteDirectory/copyLocalDirectory flatten copied directory structure.
    o Internal cache of SFTP file handles uses unsafe conversion from byte[] to String.
    o Under load ConnectionProtocol was able to send a message during key re-exchange.
    o SftpSubsystemChannel does not provide a method to perform SSH_FXP_LSTAT.
    o Added statLink method to SftpClient to get attributes of a link.
	o SftpClient symlink method passes target and link paths to createSymbolicLink in the wrong order. 
	o Added support for larger DH key sizes in diffie-hellman-group-exchange-sha1 and diffie-hellman-group-exchange-sha256.  

--------------------------------

J2SSH Maverick 1.4.48 - July 18, 2013

Bug Fixes
    o Ssh2Channel checkCloseStatus call in close method does not pass correct remote closure state causing potential lockup in close method.

--------------------------------

J2SSH Maverick 1.4.47 - July 5, 2013

Features
    o Added SshConnector.enableFIPSMode to configure the client to only use FIPS supported algorithms. This requires a JCE that supports 2048 bit DH primes so is incompatible with SunJCE, use BouncyCastle JCE to support this or a FIPS certified JCE.
    
Bug Fixes
    o When no default JCE provider is specified on JCEComponentManager, for diffie-hellman-group14-sha1 only, default to BouncyCastle JCE if it is an installed Provider. 
    o AbstractJCECipher IV is now initialized with getBlockSize, allowing it to be overridden to prevent NPE with NSS/JSS crypto.
    o Erroneous inclusion of Jakarta ORO .class files in maverick-all.jar. Use dependency if you need to depend on Jakarta ORO (regex matching in ScpClient/SftpClient).
    o SftpFileInputStream does not implement available causing issues with GZIPInputStream and BufferedInputStream.

--------------------------------

J2SSH Maverick 1.4.46 - Apr 26, 2013

Bug Fixes
    o Ssh2Session.close now attempts to ensure the remote SSH_MSG_CHANNEL_CLOSE is received before returning to ensure session exit code is processed correctly.
    o Attempts to read non-existent data from SFTP v4 file attributes ACL.

--------------------------------

J2SSH Maverick 1.4.45 - Mar 13, 2013

Bug Fixes
    o Timeout support introduced in Ssh2Client.openSessionChannel to prevent buffered mode clients from hanging. This currently requires that you call the specific openSessionChannel method in Ssh2Client with a reasonable timeout value.
    o Forwarding client bottleneck fix in local forwarding socket listener.
    o Better handling of channel EOF messages, forcing channel close when both sides are EOF.
    o Channel is now freed only after all listener events have been fired.
    o Debug mode now logs command input/output in log.
    o SftpClient fails to throw SftpStatusException on put when server returns SSH_FXP_STATUS other than SSH_FX_OK in response to SSH_FXP_CLOSE message.
    o License verification made less sensitive to whitespace changes.
    o Removed use of circular buffer in Ssh2Channel to provide more flexible support for larger window sizes.
    o OpenSSHPublicKeyFile performs unnecessary check against key algorithm name preventing further supported types being used.
    o GlobRegExpMatching fails to process match if file is a directory.
    o SSH1 RSA private keys fails to authenticate with 'unknown block type' or 'Data must start with zero' exception.

--------------------------------

J2SSH Maverick 1.4.44 - Dec 5, 2012

Features
    o Allow X11 fake cookie to be set rather than relying on random value. Normally this would not be desired but allows a scenario where J2SSH is used to bridge X11 in a server environment and needs to use fake cookie supplied by bridged client.
    
Bug Fixes
    o ScpClient creates file before parsing entire response; in the event response is incorrect create file after complete parsing of response.
    o AbstractKnownHostsKeyVerification fails to process known_hosts line with multiple host names for public key.

--------------------------------

J2SSH Maverick 1.4.43 - Oct 12, 2012
    
Bug Fixes
    o Text mode file transfer incorrectly defaults to processing all EOL types and not just system EOL types.
    o SftpClient block and maximum packet settings brought into line with other implementations as our larger (but still technically within protocol limits) were causing problems with some servers.  
   

--------------------------------

J2SSH Maverick 1.4.42 - Sept 19, 2012
    
Features
    o AES-128-CBC encryption now supported in OpenSSH private key files.
    
Bug Fixes
    o Workaround for WS_FTP causes error retrieving root path.

--------------------------------

J2SSH Maverick 1.4.41 - Sept 3, 2012

Features
    o Ability to change default hash algorithm for SSH key fingerprints.
    
Bug Fixes
    o AbstractKnownHostsKeyVerification falls into infinite loop if known_hosts file does not exist.

--------------------------------

J2SSH Maverick 1.4.40 - August 27, 2012

Features
    o diffie-hellman-group-exchange-sha256 now supported.
    
Bug Fixes
    o SFTP hangs on very large packet size. Added more restrictive check, size can be configured with system property maverick.sftp.maxPacketSize.
    o Race condition causes short lived channel to remain open if server closes before client has updated channel from uninitialized to open.
    o Zero length channel data packet causes EOF exception when channel int read() is used to return data from channel InputStream.
    o AbstractKnownHostsKeyVerification requires synchronization to ensure thread safety.

--------------------------------

J2SSH Maverick 1.4.39 - June 28, 2012

Features
    o Added system property maverick.debug.dsa.rvalue to allow output of DSA r value received from server in host key verification
      for testing that no repeated r value is seen.
      
Bug Fixes
    o X509 DSA certificate fails to be initialized from public key blob.

--------------------------------

J2SSH Maverick 1.4.38 - June 9, 2012

*************************
IMPORTANT NOTICE
*************************

This release contains a fix for a vulnerability discovered in the DSA implementation within the standalone cryptographic provider and it is advised that all users upgrade if their configuration has been modified to use the standalone cryptographic provider. The vulnerability can be used by a compromised server to discover the private key of a user using techniques outlined at http://rdist.root.org/2010/11/19/dsa-requirements-for-random-k-value/

J2SSH Maverick 1.4.5 or greater defaults to using the JCE cryptographic provider and in its default configuration is outside the scope of this vulnerability. 

This affects you if you are using a version less than 1.4.5 OR a more recent version that you have explicitly set the following system property to a value of 'true' to activate the standalone provider:

-Dcom.maverick.ssh.components.ComponentManager.tryStandaloneCryptographyBeforeJCE=true

If you require any advise on this issue please contact support@javassh.com

Bug Fixes
    o Diffie Hellman key exchange components were not fully utilising JCE DH algorithms for key agreement.
    o Vulnerability in internal cryptographic DSA provider fixed. http://rdist.root.org/2010/11/19/dsa-requirements-for-random-k-value/

--------------------------------

J2SSH Maverick 1.4.37 - May 1, 2012

Features
    o Added support for Connection, Server and Protocol licenses.
    
Bug Fixes
    o Workaround for WS_FTP returning file not found when directory ends in / 
    o Removed broken J2ME build

--------------------------------

J2SSH Maverick 1.4.36 - Mar 26, 2012

Features
    o Added getLength method to ScpClientIO to allow length of file to be determined over SCP. 
    
Bug Fixes
    o Possible signed bit conversion in ByteArrayReader causes NumberFormatException whilst reading file attributes
    o Removed finalize operation from SftpSubsystemChannel and SftpClient and ensured responses are cleared when channel is closed.

--------------------------------

J2SSH Maverick 1.4.35 - Feb 6, 2012

Features
    o Now supports known_hosts files generated using OpenSSH configuration HashKnownHosts=yes
    
Bug Fixes
    o SftpMessage cleanup in SftpSubsystem channel to help prevent potential memory leak when connection is dropped uncleanly.
    o Formatting on long filename in SftpClient incorrectly labels file as FIFO when no IF_MT value is passed by server.
    o copyRemoteDirectory incorrectly copies all files to base directory.
    o OpenSSH cannot read private keys encrypted by API.
    o AbstractKnownHostsKeyVerification chokes on invalid host key entry, invalid hosts are now ignored by default and delegated to subclass in onInvalidHostEntry function. ConsoleKnownHostsKeyVerification now outputs the line as a warning but does not fail.
    o rsa1 key is incorrectly encoded by JCEComponentManager in knownhosts file.  

--------------------------------

J2SSH Maverick 1.4.34 - Sep 25, 2011

Bug Fixes
    o Channel request failure does not include remote sides channel id        

--------------------------------

J2SSH Maverick 1.4.33 - Sep 14, 2011

Bug Fixes
    o ScpClient does not complete transfers when profile echos out during session initialization.
    o openRemoteClient does not open buffered mode client
    o TransportProtocol selectNegotiatedComponent made more tolerant of spaces in algorithm strings.
    

--------------------------------

J2SSH Maverick 1.4.32 - Jun 3, 2011

Features
    o Added support for MD5 signatures in RSA certificates.
    
Bug Fixes
    o Additional cleanup code added for SftpClient/SftpSubsystemClient to remove references to SftpMessage objects remaining in buffer.
    o Ssh1RhostsRsaAuthentication fails to default client username to value set in SshConnector.connect call.
    

--------------------------------

J2SSH Maverick 1.4.31 - Apr 20, 2011

Bug Fixes
    o Added check to ensure number of asynchronous requests never reaches zero. 
    

--------------------------------

J2SSH Maverick 1.4.30 - Feb 7, 2011
    
Features
    o Added support for newline@vandyke.com SFTP extension for text mode transfers with SFTP version <= 3. 
    o Added support for hmac-sha256. 
    o Added support for x509v3-sign-dss public/private keys & certificates.
    o SftpClient will attempt to resolve actual username/group of UID/GID on directory file listing.

Bug Fixes
    o x509v3-sign-rsa made compatible with older version of specification.
    o Changed log statement description for invalid message length; removed mention of possible DoS attack.
    o SocketWrapper.getHost potentially generates reverse DNS request, causing startup delays.
    o putFiles/getFiles behavior is inconsistent; fixed errors in path validation and pattern matching.
    o ScpClient issue with Windows path separator fixed.
    

--------------------------------

J2SSH Maverick 1.4.29 - Sep 16, 2010
    
Bug Fixes
    o Race condition in key exchange allows client to send message out of sequence, before messages that have been queued during key exchange.
    o Synchronization of Ssh2Channel.sendRequest causes deadlock when command execution request fails on Maverick SSHD server. 
    

--------------------------------

J2SSH Maverick 1.4.28 - Sep 2, 2010
    
Features                       
    o Added missing hmac-md5-96 and hmac-sha1-96 HMACs to JCE provider.
    o Added enableCompression/disableCompression methods to Ssh2Context for easy configuration of zlib compression.

Bug Fixes
    o New socket timeout behaviour causes deadlock when timeout occurs during session channel initialisation. New behaviour is not enabled by default and so this problem will only affect those customers that have enabled the new behaviour.
    o Text mode performance fix fails to flush OutputStream causing small files to be uploaded as zero bytes.
    

--------------------------------

J2SSH Maverick 1.4.27 - Jul 14, 2010
    
Bug Fixes                       
    o Text mode transfers suffer from performance problem due to writing single bytes to an unbuffered file.
        

--------------------------------

J2SSH Maverick 1.4.26 - May 24, 2010
    
Features                       
    o Support for zlib@openssh.com compression added.
    

--------------------------------

J2SSH Maverick 1.4.25 - Apr 8, 2010
    
Bug Fixes                        
    o SocketTransport.getHost() changed to return the stored hostname value instead of calling
      Socket.getInetAddress().getHostName(). This call could initiate DNS calls that can
      cause connection startup delays after a connection has been made due to it's use in 
      logging statements.
      

--------------------------------

J2SSH Maverick 1.4.24 - Mar 26, 2010

Features
    o Added option to Ssh2Context to support socket timeouts and idle events through TransportProtocolListener
      this includes an option to send SSH_MSG_IGNORE packet on idle as well as disconnect on idle connection timeout.
    
Bug Fixes                        
    o Fixed source code compile for Enterprise license.
    o Added getModifiedDateTime/getCreationDateTime/getAccessedDateTime methods to return SftpFileAttributes times
      as a java.util.Date object.
    o Changed SftpClient internal calls to return attributes from getAttributes rather than stat to prevent
      multiple calls to resolveRemotePath().
    o Use of OPEN_EXCL flag in put() method and getOutputStream() removed in favour of OPEN_TRUNCATE due to problems
      with some servers handling OPEN_EXCL incorrectly. 
    o SftpClient.get() should perform stat prior to creating local file. 
    

--------------------------------

J2SSH Maverick 1.4.23 - Feb 12, 2010

Bug Fixes
    o Added timeout to ThreadSyncronizer wait() call due to potential lockup issue.
    o API cannot handle remote window space larger than 2^31 due to signed int conversion.
    o Fixed NullPointerException on Ssh1Des initialization. 
    o SSH2 channel open hangs under load when older closed channel with same id attempts to 
      free itself again.
    o Changed get() calls to return attributes from getAttributes rather than stat to prevent
      multiple calls to resolveRemotePath().
    o JCE provider RSA encoding problem causes SSH1 connections to randomly fail.  
    

--------------------------------

J2SSH Maverick 1.4.22 - Dec 30, 2009

Bug Fixes
    o ScpClient put() incorrectly appends full absolute path to file's parent path.
    o Uninitialised SecureRandom instance causes slow start-up due to delayed seed generation.                    
    o ShellProcess readLine creates 1 second delay when process has closed.
    

--------------------------------

J2SSH Maverick 1.4.21 - Dec 9, 2009

Bug Fixes
    o EventServiceImplementation made thread safe.
    o Standalone hmac-sha96 implementation broken.  
    

--------------------------------

J2SSH Maverick 1.4.20 - Nov 16, 2009
    
Bug Fixes
    o SftpFileAttributes.getMaskString fails with NullPointerException when no 
      permissions value is returned by the server. 
    o Incorrect operator usage in standalone cryptography provider implementation of
      Diffie Hellman key exchange could generate and use algorithm values that do not
      conform to key exchange specification. 


--------------------------------

J2SSH Maverick 1.4.19 - Nov 6, 2009
    
Bug Fixes
    o Fixed copyLocalDirectory, copyRemoteDirectory behaviour to copy contents
      of folder into specified directory rather than placing new directory with
      contents into specified directory.
    o 3des CTR mode incorrectly reported itself as CBC mode
    o SFTP read fails after one block of data when server incorrectly reports a file 
      as having zero length in a stat request.
      

--------------------------------

J2SSH Maverick 1.4.18 - Aug 6, 2009
    
Bug Fixes
    o Fixed putFile, getFile behaviour in SftpClient.
    o Added debug jar file for each version of release jar.
    

--------------------------------

J2SSH Maverick 1.4.17 - Jul 29, 2009
    
Features
    o Added method to enable 'none' cipher in ComponentFactory. 
    o Added AES and 3DES CTR mode ciphers to JCE cryptography provider.

Bug Fixes
    o ShellProcess hangs when SshClient disconnects before closing session channel. 
    o AES CTR ciphers incorrectly initialized in standalone cryptography provider
    

--------------------------------

J2SSH Maverick 1.4.16 - Jul 20, 2009
    
Bug Fixes
    o SubsystemChannel limited to message 131070 bytes long causing fatal errors 
      with some servers.  
    o JCE provider DSA implementation reports incorrect bit length for public keys.  


--------------------------------

J2SSH Maverick 1.4.15 - Jun 24, 2009
    
Bug Fixes
    o Forwarding client passes display value as screen number causing display numbers > 0
      not to work. 
      

--------------------------------

J2SSH Maverick 1.4.14 - Jun 16, 2009
    
Bug Fixes
    o ComponentFactory list method not synchronized causing ArrayIndexOutOfBounds
      exception if algorithm order changed whilst method is invoked. 
      

--------------------------------

J2SSH Maverick 1.4.13 - Jun 9, 2009
    
Bug Fixes
    o Fixed SftpFileInputStream read() method, returned int masked with 0x000000FF 
      to return correct integer value. Problem can previously be seen when using
      GZIPInputStream to uncompress file loaded with SFTPFileInputStream.
      
Features
    o Added useful methods to SshPrivateKeyFileFactory and SshPublicKeyFileFactory 
      to create a file directly from key objects and convert between file formats.
      

--------------------------------

J2SSH Maverick 1.4.12 - May 28, 2009
    
Bug Fixes
    o Fixed bug with setting current directory in ScpClient.
    

--------------------------------

J2SSH Maverick 1.4.11 - May 15, 2009
    
Bug Fixes
    o Fixed NullPointerException in SftpSubsystemChannel closeFile and openFile.
    

--------------------------------

J2SSH Maverick 1.4.10 - May 8, 2009
    
Bug Fixes
    o Fixed issue with custom default JCE provider not implementing secure random 
      algorithm. API now defaults back to system default.
            

--------------------------------

J2SSH Maverick 1.4.9 - May 4, 2009
    
Bug Fixes
    o Fixed EOFException when extracting attributes from mySecureShell server.  
    

--------------------------------

J2SSH Maverick 1.4.8 - Apr 17, 2009
    
Features
    o Added new session init process object to Shell class that allows expect and input
      operations on the session before the session sits at the prompt. This would 
      typically be used to enter additional authentication information when a shell
      initializes.
    o Added arcfour, arcfour128 and arcfour256 ciphers to JCE provider. 
    o Added new constructor to SftpClient for initialization from existing SshSession object.  

Bug Fixes
    o Removed System.out.println when no BannerDisplay is set. 
    o FileTransferProgress variable not passed into recursive put or putFile calls. 
    

--------------------------------

J2SSH Maverick 1.4.7 - Feb 14, 2009
    
Bug Fixes
    o KBIRequestHandler showPrompts method changed to return boolean value. Implementations 
      should return true to indicate prompts have been answered, or false to indicate that
      the user has cancelled the authentication attempt. 
    o X509 public key implementation fails signature validation due to incorrect algorithm
      name in public key blob. 
    o Adding algorithm implementations to context when not using per instance algorithm mode causes
      multiple instances of same algorithm to be reported in key exchange. This causes long running
      applications to degrade connection performance and eventually causes new connections to fail
      with ArrayIndexOutOfBounds exception.
      

--------------------------------

J2SSH Maverick 1.4.6 - Jan 7, 2009
    
Bug Fixes
    o Serv-U FTP server returns blank string for FXP_REALNAME on default directory causing 
      subsequent attributes request to fail with "Bad Message" error.
    o Added tests for guessed key exchange first packet in some key exchange implementations.
        

--------------------------------

J2SSH Maverick 1.4.5 - Dec 12, 2008

Features
    o System property maverick.knownHosts.enableReverseDNS added to allow user to 
      disable reverse DNS lookup in AbstractKnownHostsKeyVerification.
    
Bug Fixes
    o HttpProxyTransport.connectViaProxy method causes stack overflow error.
    o Corrected change made to SftpClient rename which fails with file exists status
      when new path parameter is a directory. The previous change caused the method 
      to act differently than previous versions which allowed the file to be moved 
      from one directory to another. 
    o ScpClient.put throws NullPointerException when local path is absolute.
    o ScpClient fails with unexpected termination exception after successful file transfer
    o SSH v1 connections fail under JCE when BouncyCastle provider is not available on the 
      classpath. BC provider is now added automatically, to disable set 
      maverick.enableBCProvider=false. 
	o X509 not automatically supported when running JCE cryptography provider.
	

--------------------------------

J2SSH Maverick 1.4.4 - Oct 12, 2008

Bug Fixes
    o Last error in buffered/threaded mode causes calling thread to receive multiple notifications of exception.
    

--------------------------------

J2SSH Maverick 1.4.3 - Aug 27, 2008

Bug Fixes
    o Fixed logging ClassCastException when parameter not a string
    

--------------------------------

J2SSH Maverick 1.4.2 - Jul 29, 2008

Features
    o AbstractComponentFactory: implemented createInstance so it is not abstract anymore
    o AbstractComponentFactory: class is not abstract anymore
    o AbstractComponentFactory: renamed to ComponentFactory 
    o ComponentManager: init() no longer overrides the createInstance() methods of each of the factories
    o ComponentManager: added static setPerContextAlgorithmPreferences() and getPerContextAlgorithmPreferences methods.
    o Ssh2Context: constructor no longer overrides createInstance when creating the compression factories.
    o TransportProtocol: moved the if(!name.equals(COMPRESSION_NONE)) from the Ssh2Context constructor to the performKeyExchange(byte[]) method so that the condition is checked once instead of twice. 
    o Ssh2Context: now supports per instance algorithm preferences.
    o Provided additional method to pass optional headers through to HTTP proxy.  
    
Bug Fixes
    o ScpClient get() and put() fails to process filenames with / correctly. 
    o HTTP proxy headers now maintain their case correctly. 
    o Server reporting version 2.99 will cause protocol version error.  


--------------------------------

J2SSH Maverick 1.4.1 - Jul 09, 2008

Features
	o ComponentManager: changed to catch SecurityException on call to System.getProperty().
	o StandaloneComponentManager: Added aes128-ctr, aes192-ctr, aes256-ctr ciphers.
	o DiffieHellmanGroup1Sha1 and DiffieHellmanGroup14Sha1: have been tweaked to improve performance.
	o DiffieHellmanGroup14Sha1: Added now that there is better code safety to prevent seemingly random errors when JCE'S are used that do not support it.
	o JCEComponentManager: now tests each of the keyexchange algorithms before adding them to the list of supported algorithms, if the jce does not support the algorithm or the keysize it will not be added.	
	o OpenSSHPublicKeyFile: this class is now public.
	o ScpClient: now implements Client like the other services.
	o SECSHPublicKeyFile: this class is now public.
	o SshConnector: Changed addEventListener and removeEventListener methods to take a String threadPrefix parameter that allows listeners to be registered that will only listen to threads who's name starts with this string.
	o SshMessageRouter: If the thread that creates the message pump thread has a "prefix-" the message pump thread name is now prefixed with the this prefix, to allow per Ssh connection instance logging.
	o SftpSubsystemChannel: removed unused "longname" variable from the extractFiles(SftpMessage, String) method
	o SftpSubsystemChannel: new constructor that allows the maximum sftp version to use to be specified SftpSubsystemChannel(SshSession session, int Max_Version)
	o SftpSubsystemChannel: can now set the maximum sftp version to use on a per instance basis using the instance method setThisMaxSftpVersion(int MAX_VERSION)
	o SftpClient: new constructor that allows the maximum sftp version to use to be specified SftpClient(SshClient ssh, int Max_Version)
	o Ssh2Channel: now has a sendExtendedChannelData() method that allows non protocol messages to be sent over a channel.
	o changed ForwardingClient, AbstractKnownHostsKeyVerification, ScpClient, SftpClient, ComponentManager to catch SecurityException on calls to System.getProperty and to use "" instead of the expected value.

Bug Fixes
	o ComponentManager: removed duplicated cipher and public key factory instantiations.
	o Jars: Fixed problem with manifests that prevented them from being verified once signed using "jarsigner".
	o J2SSHEventCodes: fixed conflicting event ids.
	o IOStreamConnector: now uses the new event logging system
	o SelectorThread: fixed closeAllChannels() so that it cleans up properly
	o SftpFile: removed rename() method as it is not compatible with our sshd, as the sshd will have a file handle open and the rename message uses path not handle. (rename method fixed as it didn't work, then commented out).
	o SftpClient: mkdir(String dir) now throws exception if a file with the name "dir" already exists, previously it would be overwritten.
	o SftpClient: matchRemoteFiles now resolves paths correctly when no regular expression matching is used.
	o SftpSubsystem: fixed file handle leak in onSubsystemFree().


--------------------------------

J2SSH Maverick 1.4.0 - May 08, 2008

Features
	o  Logging: All logging has been changed to use an event model.  Important events have their own event codes, less important events are wrapped using EventLog and use the "log event" code or the "debug" event code.
	o  Logging: org.apache.log4j.BasicConfigurator.configure(); should still be used to configure log4j, but it is now only used in the LoggingListener an example implementation is provided "J2SSHLoggingListener".  The LoggingListener used should be set using SshConnector.addEventListener(new J2SSHLoggingListener());.
	o  SshConnector: Added addEventListener and removeEventListener methods for use with the new logging event model.
	o  AbstractComponentFactory: Recoded so that algorithm lists can be fully ordered, there is now a new changePositionofAlgorithm method which facilitates this.
	o  AES192CBC and AES256CBC ciphers added.
	o  ComponentManager: Recoded so that ciphers and MACs can have independent preferences for Server->Client and Client->Server communications.
	o  ComponentManager: now tries JCE first if the "com.maverick.ssh.components.ComponentManager.tryStandaloneCryptographyBeforeJCE" system property is set to false otherwise Standalone is tried first, this allows the choice to use JCE or Standalone cryptography to be made programatically instead of by changing the classpath or creating a class loader.
	o  DiffieHellmanGroup14Sha1: Removed until better code safety is added in version 1.4.1 to prevent seemingly random errors when JCE'S are used that do not support it.
	o  SftpClient, SshClient, Ssh2Client, Shell, ForwardingClient, now implement a new Client interface giving them all an exit() method with the same name.
	o  Ssh1Client: Added exit method.
	o  Added more logging to various classes.

Bug Fixes
	o  ForwardingClient: Wrapped com.sshtools.net.ForwardingClient.addListener(ForwardingClientListener listener) in an if(listener!=null)  {..} block.
	o  ShellEnvironment: moved session.close();  statements so that it does not close already closed sessions.
	o  ShellEnvironment: fixed so that when it detects 'cygwin' SSHD servers running on windows boxes it sets osDescription, previously only set osType.
	o  Ssh2RsaPublicKey: Fixed com.maverick.ssh.components.standalone.Ssh2RsaPublicKey equals method so that it is compatible with jce.Ssh2RsaPublicKey.
	o  Ssh2Client: Removed an unused password variable in Ssh2Client.
	o  ByteArrayReader: fixed com.maverick.util.ByteArrayReader.readShort(byte[], int), it was treating the byte[] as having the 0 index byte as the least significant instead of the most significant byte.
	o  IOStreamConnector: com.maverick.util.IOStreamConnector.close() now sets the connectors state to closed even if it has not been started.
	o  SftpClient: com.sshtools.sftp.SftpClient.rename() now doesn't attempt to rename to an existing filename.
	o  AbstractComponentFactory: made AbstractComponentFactory's add,remove,clear methods synchronised.
	o  SshMessageRouter: com.maverick.ssh.message.SshMessageRouter.start() now only starts the messagepump if it has not already been started.
	o  Fixed the word occurred which was misspelt as occured.
	o  When the server required no authentication and therefore had no authentication methods, the message pump on buffered sessions was not started if authenticate() was not called.
	o  fixed an scp absolute path problem
	o  updated obfuscation software to fix preverification errors


--------------------------------

J2SSH Maverick 1.3.10 - Nov 14, 2007

Features
	o  Added getHost() method to AuthenticationProtocol which returns the host the underlying transport protocol has connected to
	o  Added sendMessage() method to AuthenticationProtocol which sends a transport message.
	o  Added getProvider() method to TransportProtocol which returns the underlying SshTransport
	o  Added com.maverick.ssh2.TransportProtocol.getContext() method that returns the current SshContext.
	o  Added com.maverick.ssh2.GSSCallback class.
	o  Prepended "MessagePump" onto message pump thread name.
	o  Refactored build file.
	o  Added more debug information for when SshConnector fails to initialize Ssh2.
	o  Cleaned ComponentManager.init so that it does not initialize components twice
	o  Added getKeyExchange() method that returns the SshKeyExchangeClient in use to TransportProtocol
	o  Added getKeyExchange() method that returns the SshKeyExchangeClient in use to AuthenticationProtocol
	o  Added getKeyExchangeInstanceInUse() method that returns the SshKeyExchangeClient in use to Ssh2Client
	o  Made AuthenticationResult public
	o  Added listFiles() method to SftpClient as File.listFiles is not 1.1 compatible
	o  Added getIgnoreHostKeyifEmpty() and setIgnoreHostKeyifEmpty() methods to TransportProtocol,
	    when the ignoreHostKeyifEmpty is set to true performKeyExchange does not do any HostKeyVerification.
	o  Added Arrayequals method to transport protocol from Java 1.2 to make keep 1.1. compatibility

Bug Fixes
	o  Fixed com.maverick.util.IOStreamConnector.setBufferSize() so that an IllegalArgumentException is thrown for invalid sizes rather than valid sizes
	o  Fixed synchronization issue in com.maverick.ssh.components.ComponentManager.getInstance() so that 
	    if first call to getInstance is made simultaneously by 2 threads it is only initialized once by making the second thread wait till the first has initialized it. 
	o  Fixed bug in com.maverick.ssh2.Ssh2Channel.processChannelMessage(SshChannelMessage) where 
	    SSH_MSG_CHANNEL_CLOSE messages were being consumed once processed rather than passing back up the call chain.
	o  Fixed some 1.1 compatibility problems.


--------------------------------

J2SSH Maverick 1.3.9 - Sep 19, 2007

Features

Bug Fixes
	o  Openssh public keys now don't require comments.
	o  Bug fix in SftpSubSystemChannel.performOptimizedRead relating to files that are not multiples of 32kb.
	o  Synchronization issue fixed in com.maverick.ssh2.Ssh2Channel.processChannelMessage(SshChannelMessage), 
		so that it no longer attempts to close a channel twice.


--------------------------------

J2SSH Maverick 1.3.8 - Sep 3, 2007

Features
	o  Option added to Shell implementation to pre-configure the remote operating system type to prevent auto-detection.
	o  Added hassize(), hasuid(), hasgid() methods to com.maverick.sftp.SftpFileAttributes

Bug Fixes
	o  Removed unused private transferFile() method from SftpClient
	o  Perl5RegExpMatching always threw ClassCastException
	o  Changed com.maverick.ssh.components.AbstractComponentFactory.createDelimitedList(String preferred, Enumeration names) 
		so that if the preferred component is not contained within the enumeration, it is not prepended to the list.
	o  Made Shell.setPromptTimeoutPeriod synchronized
	o  Various low level code optimizations
	o  Various code safety improvements.
	o  ShellEnvironment fixed so that it detects 'cygwin' SSHD servers running on windows boxes
	o  SftpSubsystemChannel.performOptimizedRead optimized for files smaller than the block size.
	o  Tweaked order of code in SftpClient.get() so that local files are processed before remote files, this reduces server load, 
    		in cases where either exceptions are thrown or the api is used badly.
	o  ScpClient where relative paths were processed incorrectly
	o  com.maverick.ssh.CommandExecutor is now deprecated, the shell class should be used instead.
	o  ScpClient.putFiles fixes.
    

--------------------------------

J2SSH Maverick 1.3.7 - Jul 5, 2007

Features
    o  Added the ability to handle custom file system root formats such as "flash:"

Bug Fixes
    o  Removed all printStackTrace() calls.
    o  ScpClient.put() now throws an exception when no local file exists/matches the regular expression.
    o  Shell.exit() now closes the session even if the exit command hangs


--------------------------------

J2SSH Maverick 1.3.6 - Jun 19, 2007

Bug Fixes
    o  java.lang.ArrayIndexOutOfBoundsException in com.sshtools.scp.ScpClient.put
      

--------------------------------

J2SSH Maverick 1.3.5 - Jun 18, 2007

Features
    o  The Ssh2Client now authenticates using KBI when password authentication is not available.
    o  The SftpClient now has "getFiles" and "putFiles" methods that allow the use of regular expressions to copy multiple files.
    o  The resume features should not be used simultaneously with the a regular expression that matches more than one file.
    o  The ScpClient 'put' methods now allow the use of regular expressions to copy multiple files.
    o  The resume features should not be used simultaneously with the a regular expression that matches more than one file.
    
Bug Fixes
    o  Workaround for servers that do not conform to returning the number of bytes requested for SFTP read requests.
    o  Workaround for RSA JCE that does not return valid mac length prior to initialisation.
    o  CR in SSH identification string causes Invalid Checksum error when connecting to older 
       SSH1 servers.


--------------------------------

J2SSH Maverick 1.3.4 - May 2, 2007

Bug Fixes
    o  Standalone provider Dsa module outputs debug information to System.out
    o  PuTTY private key support broken due to missing dependency.
    

--------------------------------

J2SSH Maverick 1.3.3 - Mar 27, 2007

Bug Fixes
    o  Option to turn off pseudo terminal allocation in Shell class. This was required for 
       correct identification of VShell servers. 
    o  SftpFileInputStream uses SSH_FXP_FSTAT message for open files. Whilst this is not a 
       problem for most SFTP servers the FreeFTPD server, for unknown reasons does not support 
       this operation so prevents access using the API when attempting to use InputStream based 
       code against this server implementation. Changed SftpFileInputStream to use SSH_FXP_STAT 
       message to prevent this error.
    o  SftpClient fails to release file handle for text mode files. 
    o  SftpFile processes both \ and / as file separators causing problems with filenames that
       contain \ as a valid character.


--------------------------------

J2SSH Maverick 1.3.2 - Feb 20, 2007

Bug Fixes
    o  Scp file transfers fail with IndexOutOfBounds exception if small buffer size is used.


--------------------------------

J2SSH Maverick 1.3.1 - Feb 12, 2007

Features
    o  Option to disable key re-exchange.       
       
Bug Fixes
    o  SftpClient put to hidden files on Windows port of OpenSSH does not truncate file.
    

--------------------------------

J2SSH Maverick 1.3.0 - Jan 31, 2007

Features
    o  API can now be used exclusively with the Java Runtime JCE provider, or alternatively
       the internal provider. Simply select the maverick-jce-only.jar file if you want to use
       the JCE exclusively, or maverick-standalone-only.jar if you want to use the internal
       provider. The maverick-all.jar contains all implementations and will default to the
       internal provider. 


--------------------------------

J2SSH Maverick 1.2.12 - Nov 12, 2006

Features
    o  Additional method added to SshConnector to allow SSH identification software/version/comments field
       to be replaced by a custom value. 

Bug Fixes
    o  SSH identification string from OpenSSH server with trailing space character ' ' causes
       Invalid Host Key Signature exception.
    o  Shell exit method fails to close session channel if exit command fails. 
    o  Public key authentication fails when using JCE versions of public key objects.
    o  Server failing to respond to MSG_SSH_CHANNEL_CLOSE causes API to lockup.
    o  Inconsistent SshException reason code returned when remote side terminates connection.


--------------------------------

J2SSH Maverick 1.2.11 - Sep 18, 2006

Features
    o  hmac-md5-96 and hmac-sha1-96 Message Authentication Code algorithms added
    o  Support for x509v3-sign-rsa and x509v3-sign-rsa-sha1 certificates 
    o  Added methods to SshConnector to return current product version and release date.
    o  Added diffie-hellman-group14-sha1 key exchange as per SSH Transport Protocol specification. This 
       implementation exists in both the internal crypto provider and JCE formats although it should be
       noted that the default SUN reference JCE provider does not support 2048 bit primes required by
       this key exchange method. The BouncyCastle JCE provider (www.bouncycastle.org) does and has been
       used to test this algorithm works with JCE enabled.
    o  Support for SSH1 challenge response authentication added.

Bug Fixes
    o  API now passes all SSHredder vulnerability checks (http://www.rapid7.com/info/sshredder.html)
    o  Added partial message timeout setting to Ssh2Context in response to a number of vulnerabilties
       identified by SSHredder. This timeout only applies once a message is received, and determines how
       long the remote server has to send the remaining bytes of the message before a timeout exception is
       thrown. This prevents the client locking up when the server does not send all of the data it declared
       in the message header.
    o  Shell class hangs on createSession due to prompt command being sent too quickly.
    o  Timeout setting added to Shell class so that it does not get stuck waiting for a prompt that never arrives.
    o  Initialization period setting added to Shell class to allow the shell to initialize correctly over a configurable period.
    o  FileTransferProgress reports total transfer length of 0 for ASCII file transfers. 


--------------------------------

J2SSH Maverick 1.2.10 - Jul 22, 2006

Bug Fixes
    o  Shell class hangs when connecting to FreeSSHD Windows server. Whilst the actual problem seems to be a bug in 
       the server implementation several workarounds have been added to the Shell class (see javadocs for further info).


--------------------------------

J2SSH Maverick 1.2.9 - Jun 8, 2006

Bug Fixes
    o  SCP time command is now ignored rather than throwing an exception to allow files to still be received
       from servers sending a time command.
    o  UTF-8 license encoding now supported.


--------------------------------

J2SSH Maverick 1.2.8 - May 3, 2006

Bug Fixes
    o  SftpFile getParent fix from 1.2.7 causes "No such file" error with filesystem root /
    o  Exceptions caught by a subsystem was not being propagated correctly resulting in bad error messages.


--------------------------------

J2SSH Maverick 1.2.7 - Mar 17, 2006

Features
    o  FileTransferProgress interface can now be passed into the ScpClient methods to enable a transfer to be
       tracked or cancelled.
    o  Support for socket timeouts. Setting a timeout on the socket will now result in a non-fatal exception with 
       a reason code of SOCKET_TIMEOUT. 
    o  Simple CommandExecutor class added to allow multiple commands to be executed with a session. (Requires knowledge
       of prompt format)
    o  Additional executeCommand method added to SshSession interface to allow charset to be defined for the command.

Bug Fixes
    o  Shell class fails when remote environment cannot be determined, this has been changed to allow default behaviour.
    o  SftpInputStream read() method always returns 1
    o  SftpFile getParent method could return itself as the parent if path ends with /
    o  AbstractKnownHostsKeyVerification fails to consult temporary keys before permanent keys causing host verification errors
    o  Forwarding client could return tunnels that no longer exist.


--------------------------------

J2SSH Maverick 1.2.6 - Oct 13, 2005

Bug Fixes
    o  Directory operation methods would always report new file as an update file.
    o  Directory operation remote copy always fetched unchanged files causing corruption of progress tracking.
    o  Transport protocol failed to set maximum packet size to value configured in SshContext.
    o  In some circumstances the ByteArrayReader could return an incorrect value for unsigned int causing very 
       rare miscellaneous errors.


--------------------------------

J2SSH Maverick 1.2.5 - Aug 3, 2005

Bug Fixes
    o  UnsignedInteger32 could throw NumberFormatException even though value passed was a valid 32 bit unsigned integer.
    o  SSH key fingerprint uses incorrect hash algorithm
    o  Transport protocol fails with large number of padding bytes
    o  Incompatibility issues with FOXIT WAC server fixed.
    o  SftpInputStream returns corrupted data.


--------------------------------

J2SSH Maverick 1.2.4 - Jun 1, 2005

Features
    o  Methods in Ssh2Client to obtain the negotiated ciphers, macs, keyexchange, host key and compression algorithms.
    o  copyLocalDirectory and copyRemoteDirectory now provide a list of failed transfers in the DirectoryOperation result.
    o  Option to kill active tunnels added to ForwardingClient cancelRemoteForwarding and stopLocalForwarding methods.

Bug Fixes
    o  SftpInputStream and SftpOutputStream now perform optimized transfers providing similar performance to the
       SftpClient's get and put methods.
    o  stopLocalForwarding & cancelRemoteForwarding methods throw NPE when attempt is made to stop an invalid 
       forwarding configuration
    o  The maximum supported transport protocol packet was 35,000 bytes, this caused problems with Globalscape server which
       sends packets larger than the recommended size. The API will now adapt to such errors by increasing the maximum packet
       size when required. The limit forcing a protocol exception can now be set in the Ssh2Context setMaximumPacketLength 
       method which defaults to 131072 bytes.
    o  ANT task removed from distribution, use the free ANT download if required.
    o  SshKeyPairGenerator class algorithm naming inconsistency removed.
    o  AbstractKnownHostsKeyVerification and public key factories throw OutOfMemoryError when parsing a corrupted file.


--------------------------------

J2SSH Maverick 1.2.3 - Apr 6, 2005

Features
    o  SftpClient now attempts to locate the sftp-server binary for *unix SSH1 connections wanting to use SFTP.
    o  InvalidPassphaseException added to help identify incorrect passphrase entry on private key files.
    o  Shell class provides capture of individual command output from the users shell.
    o  ShellEnvironment class provides information about the remote operating system and shell environment.
    o  ShellProcess provides expect type functionality for enhanced shell automation.

Bug Fixes
    o  SftpClient rename method now attempts to find destination file and throw a more descriptive error.
    o  copyRemoteDirectory fails to delete local file in synchronization mode.
    o  HTTPProxyTransport fails with IndexOutOfBoundsException when realm not present in Proxy-Authenticate header.
    o  Inbound compression error causes protocol violation.
    o  AbstractKnownHostsKeyVerification saves temporary keys to known_hosts file.
    o  Transport protocol fails to encrypt zero length array using JCE cipher.


--------------------------------

J2SSH Maverick 1.2.2 - Feb 7, 2005

Bug Fixes
    o  SftpClient.get method fails with "invalid resume state" exception when attempting to download 
       a zero length file


--------------------------------

J2SSH Maverick 1.2.1 - Jan 11, 2005

Features
    o  Channel option to automatically consume input data when using event based channels

Bug Fixes
    o  Rare race condition causes deadlock of connection
    o  SSH1 public key authentication fails with working private key
    o  Data events do not fire correctly in buffered mode


--------------------------------

J2SSH Maverick 1.2.0 - Jan 2, 2005

Features
    o  Support for SFTP protocol version 4
    o  SftpClient can now operate in text mode to support changing of EOL between systems
    o  Option to buffer the connection with a single background thread
    o  SftpClient now supports servers that incorrectly return windows style paths as absolute filenames
    o  Refactored message routing
    o  Utility class added to help encode pseudo terminal modes

Bug Fixes
    o  Adding a message to the SshMessageStore was not synchronized
    o  Remote forwarding channels although closed are not being removed from the ForwardingClient
    o  ChannelInputStream fails to return EOF after channel close operation.


--------------------------------

J2SSH Maverick 1.1.8 - Nov 29, 2004

Features
    o  Added openRemoteClient method to SshClient interface. This method creates an SSH client on the 
       remote computer and connects to a further SSH server and is useful for situations where you cannot
       get direct access to a server because it is behind a firewall.
    o  JCE support added to SSH2 - You can now optionally use an external JCE provider for the following 
       algorithms Blowfish, DESede, MD5, SHA1, SHA1withRSA, SHA1withDSA, RSA, DSA and DH (Diffie Hellman).

Bug Fixes
    o  diffie-hellman-group-exchange key exchange fails with old servers - method now uses backwards
       compatibile version of the specification
    o  Cancel remote forwarding request fails to reach server


--------------------------------

J2SSH Maverick 1.1.7 - Oct 29, 2004

Bug Fixes
    o  com.sshtools package source code missing from the enterprise distribution


--------------------------------

J2SSH Maverick 1.1.6 - Oct 20, 2004

Bug Fixes
    o  SCP implementation fails with IOS router because it does not send EOF message
    o  diffie-hellman-group-exchange-sha1 key exchange fails if debug or ignore messages are received
       during the initial exchange of messages


--------------------------------

J2SSH Maverick 1.1.5 - Oct 14, 2004

Features
    o  ForwardingClientListener is now notified when a tunnel fails to open
    o  getPort method added to SshTransport

Bug Fixes
    o  Generated SSH1 RSA keys sometimes failed when re-loaded
    o  Forwarding listeners would continue to operate even when the connection has been disconnected
    o  BufferedSession caused possible deadlock when multiple threads attempted to close the channel


--------------------------------

J2SSH Maverick 1.1.4 - Sep 22, 2004

Features
    o  ChannelEventListener now receives extended data event
    o  SFTP put/get methods now have option to resume an interrupted download

Bug Fixes
    o  Duplication of SSH1 connections would fail if connection had been disconnected.
    o  RSA key signature fails when key is loaded from file


--------------------------------

J2SSH Maverick 1.1.3 - Aug 25, 2004

Features
    o  Secure Shell Public-Key Subsystem (Version 1)
    o  diffie-hellman-group-exchange-sha1 key exchange
    o  Rekeying recommendations from `SSH Transport Layer Encryption Modes` Internet Draft implemented
    o  Stateful decryption counter (SDCTR) mode ciphers for AES
    o  SshIO interface introduced as base interface for all SSH communication
    o  Packet class introduced to provide more efficent use of memory resources in Subsystem Class

Bug Fixes
    o  "Invalid message type 36 received" Exception caused by SSH1 server sending a debug message 
        as the client was waiting for SSH_SMSG_SUCCESS.


--------------------------------

J2SSH Maverick 1.1.2 - Jul 26, 2004

Bug Fixes
    o  Reading of SSH_FXP_STATUS exception caused exception in server versions <= 2
    o  AbstractKnownHostsKeyVerification failed to recognise IP address only entries.
    o  PuTTY private key format throws OutOfMemoryError with invlaid passphrase
    o  AbstractKnownHostsKeyVerification failed to throw an exception is host file could not
       be saved.


--------------------------------

J2SSH Maverick 1.1.1 - Jun 3, 2004

Features
    o  Added supportsPassphraseChange and getType methods to SshPrivateKeyFile interface
    o  Reading of PuTTY private keys is now supported (PuTTY-User-Key-File-1 and PuTTY-User-Key-File-2 formats)
    o  Reading of SSH Communications Security private keys is now supported.
    o  cdup method added to SftpClient for changing the working directory to the parent directory
    o  getFile method added to SftpSubsystemChannel for creating instances of SftpFile
    o  getParent method added to SftpFile to return an SftpFile instance of the parent file


--------------------------------

J2SSH Maverick 1.1.0 - Apr 30, 2004

IMPORTANT NOTICE: This version of J2SSH Maverick may not be compatible with source code developed using 
                  previous versions. 

Features
    o  Refactored exception handling introduces SshException to replace generic IOException usage
    o  Support for hostbased authentication

Bug Fixes
    o  Incorrect permissions set when using umask on files


--------------------------------

J2SSH Maverick 1.0.9 - Apr 20, 2004


Bug Fixes
    o  X Forwarding problem failed to open channel


--------------------------------

J2SSH Maverick 1.0.8 - Apr 8, 2004


Bug Fixes
    o  Additional chmod operation removed from SftpClient put method
    o  Improved exception handling
    o  Closing channel OutputStream causes termination of connection


--------------------------------

J2SSH Maverick 1.0.7 - Mar 29, 2004


Features
    o  X forwarding is now supported
    o  Further enhancements to SFTP exception handling
    o  SFTP provider fallback option for SSH2 connections.


--------------------------------

J2SSH Maverick 1.0.6 - Mar 8, 2004


Features
    o  Added setting to configure SFTP filename charset encoding.
    o  HTTP, SOCKS 4 and SOCKS 5 proxy SshTransport implementations added.


--------------------------------

J2SSH Maverick 1.0.5 - Mar 2, 2004


Features
    o  Additional ciphers AES, Twofish and CAST have been added and may optionally be used for SSH2 connections.
    o  ChannelEventListener now supports dataRecieved, dataSent events.
    o  SSH1 PublicKeyAuthentication now supports testing of public key for authentication suitability
    o  API random number generator modified to improve overall entropy of randomness.
    o  SFTP support for SSH1 connections

Bug Fixes:
    o  Remote disconnection caused OutOfMemoryError.
    o  Message router fails to release block after receiving message which causes the connection to lockup.
    o  FileTransferProgress failed with SftpClient directory operations.
    o  SftpClient directory operations failed to synchronize.


--------------------------------

J2SSH Maverick 1.0.4 - Feb 7, 2004

Bug Fixes:
    o  Reduced maximum packet size which was causing problems with some servers.
    o  SFTP optimization block size could not be set at 4096 or below.


--------------------------------

J2SSH Maverick 1.0.3 - Feb 2, 2004

Features
    o  Additional methods in SftpSubsystemChannel to 'performOptimizedWrite' and 'performOptimizedRead'
    o  Optimized SftpClient 'put' and 'get' methods.
    o  SubsystemChannel moved to 'com.maverick.ssh' package and refactored to enable operation over both SSH1 and SSH2.
    o  SftpClient now operates over SSH1 by executing the subsystem directly. Use Ssh1Context's 'setSFTPProvider' to change the default binary location of '/usr/sbin/sftp-server'
    o  SSHTools Licensing system has been integrated with the product.




--------------------------------

J2SSH Maverick 1.0.1 - Jan 10, 2004

Bug Fixes:
    o  SSH2 Transport could fail cipher negotiation, even if a valid cipher exists.


--------------------------------

J2SSH Maverick 1.0.0 - Jan 9, 2004

Features:
    o  Public/Private key file generation
    o  DES cipher for SSH1
    o  ZLIB Compression for SSH2