ssh: Proptest SSH public-key canonicalization
The auth path stores keys as their OpenSSH text encoding and looks
them up by exact-string match. That contract relies on
`ssh_key::PublicKey::to_openssh()` being:
1. Deterministic — calling it twice on the same key produces
byte-identical output
2. Roundtrip-stable — encode → parse → re-encode is byte-
identical
If either breaks, a registered key offered by a client could
miss the lookup silently and auth fails with no useful
diagnostic. These proptests pin both properties across the
algorithms we expect in practice (Ed25519, ECDSA P-256).
Sanity proptest added as a third case: two independent random
keypairs of the same algorithm must produce distinct public
keys. Guards against a regression where seeding accidentally
collapses to a fixed key — that would make all clients
authenticate as the same principal, which would be very bad.
RSA omitted from the algorithm strategy: key generation is
multi-second per key and the serialization-stability property
is algorithm-independent for our exact-match use case. If we
ever see RSA-specific drift in the wild, add it back with a
dedicated low-case-count branch.
64 cases per property × 3 properties × ~2 algorithms = ~384
verified cases. Test runs in 0.25s on a warm build — Ed25519
and ECDSA generation are both cheap.
What's NOT covered here: pack-over-SSH parity (the SSH-transport
equivalent of protocol_push_roundtrip's proptest). That needs
genuine test infrastructure — a generic git+openssh-client
testcontainer for hermetic git invocation, host.docker.internal
routing back to our SSH server — flagged as a separate slice
worth tackling when there's appetite, not bundled in here.