1.4.0 (2026-08-18)

+ Added auth_password_change_request_event
+ Added support for ssh-ed448 keys
+ Added support for umac-128-etm@openssh.com and umac-64-etm@openssh.com MAC algorithms
+ Added support for aes128-gcm@openssh.com encryption algorithm
+ Support additional algorithms for encrypted private key files
+ Support loading of private keys from pkcs#7 (.pfx) files
- Fix building fzssh with Nettle >= 4.0
- Fixed an issue where the channel input buffer could grow without bounds
- Added compatibility flag to suppress agent connection error message due to sandboxing on macOS

1.3.0 (2026-05-27)

+ SFTP: Added compatibility flag to ignore unknown bits in flags field of File Attributes
- Added extra padding to SSH_MSG_USERAUTH requests to obfuscate the combined length of username and password
- Fixed some issues when importing malformed private keys
- Improved heuristic to decide on log level if an SSH connection unexpectedly closes
- Diffie-Hellman Group Exchange: Check that modulus of received group is a safe prime and that the subgroup is of the correct order
- Added additional checks for trailing data in incoming packets

1.2.1 (2026-05-05)

+ Added compatibility flag to allow use of agent keys of unknown type
- Use a two-step approach to extract names from SSH_FXP_NAME packet: If the name blob can be extracted, but the string fails the sanity check, ignore the item with the invalid name
- Handle SSH_FXP_STATUS with missing description and language tag, but complain loudly
- Support building with Nettle version 4

1.2.0 (2026-04-16)

+ Added support for the publickey-hostbound@openssh.com extension
- Send sftp_client::ready_event after obtaining peer version
- Small improvements to channel log messages

1.1.10 (2026-04-14)

- Default to a maximum large receive window of 2^31 - 1 octets that safely fits into a signed 32-bit integer use by specification violating servers, and white-list known-good servers for use of 2^32 - 1 octet receive windows
- Allow larger incoming SFTP packets to match what OpenSSH accepts, as there are servers that unfortunately send packets larger than the safe 32768 octet limit from the specs

1.1.9 (2026-04-14)

- Handle nonsensical SSH_MSG_USERAUTH_INFO_REQUEST messages with no name, no instructions and no prompt
- SFTP: Since the SSH_MSG_USERAUTH_BANNER packet can be safely ignored, only loudly complain if it is malformed instead of dropping the connection
- Require libfilezilla 0.55.3

1.1.8 (2026-04-13)

- SFTP: Allow empty longname in listing entries
- Some servers cannot handle large receive windows of up to 2^32 - 1 bytes, despite RFC 4254 mandating that all implementations MUST support windows of up to 2^32 - 1 bytes. If we believe to connect to such a server in single-channel mode, use a smaller window of 2^31 - 1 bytes.

1.1.7 (2026-03-24)

- Fix incorrect uploads in SFTP client due to a superflous length field

1.1.6 (2026-03-23)

- During re-keying, one session at a time may now temporarily queue a large amount of input
- If single_channel in fz::ssh::client_parameters is set, use a huge window if the server doesn't support the now-flow-control extension
- fz::ssh::server now recognizes the "simple@putty.projects.tartarus.org" channel request and widens the channel window

1.1.5 (2026-03-16)

- Added version.hpp

1.1.4 (2026-03-09)

- On import of public keys from PuTTY's stored hostkey format, set comment to host:port
- Fixed handling of "reserved" field in SSH_MSG_KEXINIT

1.1.3 (2026-02-25)

+ Added support for mlkem768x25519-sha256
- The hostkey verification event is now also sent if the negotiated algorithms change during re-keying, to allow clients to prompt for confirmation on less desired algorithms

1.1.2 (2026-02-10)

+ Added sftp_server::unblock_read
+ SFTP: Implicit conversion of filenames to UTF-8 is gone. sftp_server now only accepts UTF-8, sftp_client makes checking the encoding and conversion the responsibility of the library user.
- Logging improvements
- When resolving parameters, additional whitespace is now accepted

1.1.1 (2026-01-23)

- Fix channel receive window adjustments if the input buffer is not empty

1.1.0 (2026-01-16)

+ Add compatibility flags to parameters to deal with peers that violate the SSH specifications
+ Add banner to server_parameters to be sent with SSH_MSG_USERAUTH_BANNER
- Several performance optimizations

1.0.4 (2025-12-12)

- Allow import of slightly malformed private ed25519 keys that were generated by FileZilla Pro Enterprise Server < 1.7

1.0.3 (2025-12-10)

- Fixed ecdh-sha2-nistp384 and ecdh-sha2-nistp521 key exchange algorithms using the wrong hash
- Improved logging on connection errors and suppress errors on graceful connection shutdown
- If destroying a session, it is now attempted to send out a disconnect message
- Now all pending events from a session get removed if the session is destroyed

1.0.2 (2025-11-28)

- Fix reading identification string if it arrives piecewise
- Send actual version number in indentification string
- Handle empty names in SSH_FXP_REALPATH
- Fixed import of RFC 4716 public keys

1.0.1 (2025-11-24)

- If a SSH_FXP_READ packet requests a very large size, truncate it to max_out_payload_size

1.0.0 (2025-11-19)

- Initial release
