| Commit message (Collapse) | Author | Age | Files | Lines | ||
|---|---|---|---|---|---|---|
| ... | ||||||
| * | Implement encode/decode for boolean. | David Venhoek | 2026-01-20 | 1 | -0/+15 | |
| | | ||||||
| * | Ensure packet size is at least 16 | bjorn3 | 2026-01-20 | 1 | -1/+2 | |
| | | | | | This is a requirement of the SSH spec. | |||||
| * | Rename OutgoingPacket to EncodedPacket | bjorn3 | 2026-01-20 | 1 | -5/+7 | |
| | | | | | | | This frees up the OutgoingPacket name for a struct or enum representing the contents of a packet to send without all the structure wrapping the payload of a packet. | |||||
| * | Rename Packet to IncomingPacket | bjorn3 | 2026-01-20 | 2 | -11/+13 | |
| | | | | | | The Packet type is only used for incoming packets, never for outgoing packets. | |||||
| * | Ensure packets are a multiple of the cipher block size | bjorn3 | 2026-01-20 | 1 | -5/+10 | |
| | | ||||||
| * | Implement support for encryption | bjorn3 | 2026-01-20 | 3 | -64/+183 | |
| | | ||||||
| * | Get rid of the separate PacketBuilder | bjorn3 | 2026-01-20 | 3 | -63/+30 | |
| | | ||||||
| * | Tweak style | Dirkjan Ochtman | 2026-01-19 | 1 | -12/+8 | |
| | | ||||||
| * | Use higher-level abstractions for VersionExchange reading | Dirkjan Ochtman | 2026-01-19 | 2 | -26/+26 | |
| | | ||||||
| * | Rename decrypting_key to decryption | Dirkjan Ochtman | 2026-01-19 | 1 | -5/+5 | |
| | | ||||||
| * | Use full keys type during decryption | Dirkjan Ochtman | 2026-01-19 | 1 | -13/+10 | |
| | | ||||||
| * | Clarify documentation for ReadState fields | Dirkjan Ochtman | 2026-01-19 | 1 | -9/+11 | |
| | | ||||||
| * | Replace Packet::decode with ReadState::decode_packet | bjorn3 | 2026-01-19 | 1 | -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 ReadState | bjorn3 | 2026-01-19 | 3 | -9/+64 | |
| | | ||||||
| * | Implement support for decryption in ReadState | bjorn3 | 2026-01-19 | 3 | -40/+200 | |
| | | ||||||
| * | Move packet parsing out of ReadState::packet | bjorn3 | 2026-01-19 | 2 | -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 enum | bjorn3 | 2026-01-19 | 2 | -11/+16 | |
| | | ||||||
| * | Fix validation of the identification string | bjorn3 | 2026-01-19 | 1 | -1/+3 | |
| | | | | | | The max size of the identification string is 255 including CRLF, not 256 excluding CRLF. | |||||
| * | Truncate buffer when reading from stream | Dirkjan Ochtman | 2026-01-17 | 2 | -10/+10 | |
| | | ||||||
| * | Loop in case identification is incomplete | Dirkjan Ochtman | 2026-01-17 | 1 | -3/+10 | |
| | | ||||||
| * | Simplify version exchange error handling | Dirkjan Ochtman | 2026-01-17 | 1 | -23/+15 | |
| | | ||||||
| * | Untangle buffering data and decoding it | Dirkjan Ochtman | 2026-01-17 | 2 | -9/+14 | |
| | | ||||||
| * | Attach read() to ReadState | Dirkjan Ochtman | 2026-01-17 | 2 | -22/+25 | |
| | | ||||||
| * | Abstract I/O stream | Dirkjan Ochtman | 2026-01-17 | 2 | -11/+10 | |
| | | ||||||
| * | Move some code around | Dirkjan Ochtman | 2026-01-15 | 3 | -119/+118 | |
| | | ||||||
| * | Port KeyExchange state to centralized I/O | Dirkjan Ochtman | 2026-01-15 | 2 | -28/+43 | |
| | | ||||||
| * | Add abstraction for the handshake hash | Dirkjan Ochtman | 2026-01-15 | 2 | -20/+35 | |
| | | ||||||
| * | Deduplicate read buffer truncation | Dirkjan Ochtman | 2026-01-15 | 2 | -12/+10 | |
| | | ||||||
| * | Use generic packet decoding more | Dirkjan Ochtman | 2026-01-15 | 2 | -20/+24 | |
| | | ||||||
| * | Track packet payload through decoding | Dirkjan Ochtman | 2026-01-15 | 1 | -8/+32 | |
| | | ||||||
| * | Replace KeyExchange::for_new_session() with Default impl | Dirkjan Ochtman | 2026-01-15 | 2 | -6/+2 | |
| | | ||||||
| * | Extract I/O from EcdhKeyExchange state handling | Dirkjan Ochtman | 2026-01-15 | 3 | -65/+119 | |
| | | ||||||
| * | Avoid RawKeySet lifetime dependency on session ID | Dirkjan Ochtman | 2026-01-15 | 1 | -23/+23 | |
| | | ||||||
| * | Support for derived encryption keys larger than the SHA256 output (#84) | bjorn3 | 2026-01-15 | 1 | -24/+64 | |
| | | ||||||
| * | Take semver-compatible dependency updates | Dirkjan Ochtman | 2026-01-14 | 1 | -31/+31 | |
| | | ||||||
| * | Reduce indirection some more | Dirkjan Ochtman | 2026-01-05 | 1 | -19/+25 | |
| | | ||||||
| * | Clean up indirection with KeyDerivation | Dirkjan Ochtman | 2026-01-05 | 1 | -13/+6 | |
| | | ||||||
| * | Use enum type to represent key input | Dirkjan Ochtman | 2026-01-05 | 1 | -8/+32 | |
| | | ||||||
| * | Extract named KeyDerivation type | Dirkjan Ochtman | 2026-01-05 | 1 | -13/+27 | |
| | | ||||||
| * | Tweak key type names | Dirkjan Ochtman | 2026-01-05 | 1 | -8/+8 | |
| | | ||||||
| * | Keep struct and impl together | Dirkjan Ochtman | 2026-01-05 | 1 | -7/+7 | |
| | | ||||||
| * | Move key types down to fit in with top-down ordering | Dirkjan Ochtman | 2026-01-05 | 1 | -44/+44 | |
| | | ||||||
| * | Send server version after receiving client version | bjorn3 | 2026-01-05 | 1 | -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::derive | bjorn3 | 2026-01-05 | 1 | -3/+3 | |
| | | ||||||
| * | Make *KeyExchange::advance consume self | bjorn3 | 2026-01-05 | 1 | -2/+2 | |
| | | | | | | This enforces that the key exchange can't be arbitrarily restarted in the middle. | |||||
| * | Add code to derive encryption keys | bjorn3 | 2026-01-05 | 2 | -7/+70 | |
| | | | | | This doesn't yet implement the actual encryption/decryption yet. | |||||
| * | Don't try to listen when --generate-host-key is passed | bjorn3 | 2026-01-05 | 1 | -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_bytes | bjorn3 | 2025-12-19 | 2 | -7/+7 | |
| | | ||||||
| * | Couple refactors to hash_mpint_bytes | bjorn3 | 2025-12-19 | 1 | -10/+10 | |
| | | | | | | * Rename argument * Replace always succeeding <[_]>::get() with slice indexing. | |||||
| * | Introduce hash_mpint_bytes helper | bjorn3 | 2025-12-19 | 2 | -16/+20 | |
| | | | | | | We need to hash bytestrings as mpint multiple times during the key exchange. | |||||
