summaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
...
* Tweak styleDirkjan Ochtman2026-01-191-12/+8
|
* Use higher-level abstractions for VersionExchange readingDirkjan Ochtman2026-01-192-26/+26
|
* Rename decrypting_key to decryptionDirkjan Ochtman2026-01-191-5/+5
|
* Use full keys type during decryptionDirkjan Ochtman2026-01-191-13/+10
|
* Clarify documentation for ReadState fieldsDirkjan Ochtman2026-01-191-9/+11
|
* Replace Packet::decode with ReadState::decode_packetbjorn32026-01-191-48/+30
| | | | | This handles accessing the internal decrypted buffer that the user doesn't otherwise have access to.
* Handle NEW_KEYS and set encryption key for ReadStatebjorn32026-01-193-9/+64
|
* Implement support for decryption in ReadStatebjorn32026-01-193-40/+200
|
* Move packet parsing out of ReadState::packetbjorn32026-01-192-72/+32
| | | | | | | | | Outside of a couple very narrow cases like the initial packet and (when strict key exchange is used) the rest of the key exchange, there is never a single fixed packet type which can be received at any given point in time. As such immediately parsing the packet to a fixed type in ReadState::packet doesn't help much, while it does complicate the code a bit.
* Introduce Completion enumbjorn32026-01-192-11/+16
|
* Fix validation of the identification stringbjorn32026-01-191-1/+3
| | | | | The max size of the identification string is 255 including CRLF, not 256 excluding CRLF.
* Truncate buffer when reading from streamDirkjan Ochtman2026-01-172-10/+10
|
* Loop in case identification is incompleteDirkjan Ochtman2026-01-171-3/+10
|
* Simplify version exchange error handlingDirkjan Ochtman2026-01-171-23/+15
|
* Untangle buffering data and decoding itDirkjan Ochtman2026-01-172-9/+14
|
* Attach read() to ReadStateDirkjan Ochtman2026-01-172-22/+25
|
* Abstract I/O streamDirkjan Ochtman2026-01-172-11/+10
|
* Move some code aroundDirkjan Ochtman2026-01-153-119/+118
|
* Port KeyExchange state to centralized I/ODirkjan Ochtman2026-01-152-28/+43
|
* Add abstraction for the handshake hashDirkjan Ochtman2026-01-152-20/+35
|
* Deduplicate read buffer truncationDirkjan Ochtman2026-01-152-12/+10
|
* Use generic packet decoding moreDirkjan Ochtman2026-01-152-20/+24
|
* Track packet payload through decodingDirkjan Ochtman2026-01-151-8/+32
|
* Replace KeyExchange::for_new_session() with Default implDirkjan Ochtman2026-01-152-6/+2
|
* Extract I/O from EcdhKeyExchange state handlingDirkjan Ochtman2026-01-153-65/+119
|
* Avoid RawKeySet lifetime dependency on session IDDirkjan Ochtman2026-01-151-23/+23
|
* Support for derived encryption keys larger than the SHA256 output (#84)bjorn32026-01-151-24/+64
|
* Take semver-compatible dependency updatesDirkjan Ochtman2026-01-141-31/+31
|
* Reduce indirection some moreDirkjan Ochtman2026-01-051-19/+25
|
* Clean up indirection with KeyDerivationDirkjan Ochtman2026-01-051-13/+6
|
* Use enum type to represent key inputDirkjan Ochtman2026-01-051-8/+32
|
* Extract named KeyDerivation typeDirkjan Ochtman2026-01-051-13/+27
|
* Tweak key type namesDirkjan Ochtman2026-01-051-8/+8
|
* Keep struct and impl togetherDirkjan Ochtman2026-01-051-7/+7
|
* Move key types down to fit in with top-down orderingDirkjan Ochtman2026-01-051-44/+44
|
* Send server version after receiving client versionbjorn32026-01-051-7/+7
| | | | | | Wireshark gets confused when it happens the other way around even though the ssh protocol allows this. Wireshark will treat whichever side sends the version banner first as the client.
* Fix server to client keys in RawKeys::derivebjorn32026-01-051-3/+3
|
* Make *KeyExchange::advance consume selfbjorn32026-01-051-2/+2
| | | | | This enforces that the key exchange can't be arbitrarily restarted in the middle.
* Add code to derive encryption keysbjorn32026-01-052-7/+70
| | | | This doesn't yet implement the actual encryption/decryption yet.
* Don't try to listen when --generate-host-key is passedbjorn32026-01-051-1/+2
| | | | | | This way you can generate a host key without the ssh server immediately starting. This way you can for example run it from a post-install script or a systemd service that only runs on the first boot.
* Replace hash_mpint_bytes with with_mpint_bytesbjorn32025-12-192-7/+7
|
* Couple refactors to hash_mpint_bytesbjorn32025-12-191-10/+10
| | | | | * Rename argument * Replace always succeeding <[_]>::get() with slice indexing.
* Introduce hash_mpint_bytes helperbjorn32025-12-192-16/+20
| | | | | We need to hash bytestrings as mpint multiple times during the key exchange.
* Store the generated host key on the diskbjorn32025-12-192-6/+29
| | | | | | Instead of generating one on every connection. This avoids having to either remove the host key again after every test or having to tell the ssh client to not store host fingerprints.
* Generate host key once when startingbjorn32025-12-193-13/+21
|
* Bump MSRV to 1.83 (for File::create_new())Dirkjan Ochtman2025-12-195-5/+6
|
* Initial stab at a CONTRIBUTING.mdDirkjan Ochtman2025-12-191-0/+359
|
* Integrate with systemd's listenfd protocolbjorn32025-12-193-4/+129
| | | | | | | | This will be useful for servers in the future, but is already useful during development when using the systemfd executable by allowing you to already run the ssh client while the server is still compiling. Systemfd keeps the port open and as soon as the server has started it will accept the pending connection attempt.
* Actually make lints applyDirkjan Ochtman2025-12-124-19/+18
|
* Take semver-compatible dependency updatesDirkjan Ochtman2025-12-121-18/+18
|