Vixen
02b45cc4
csharp
public sealed class HandshakeTarget

The server's receive path, from an unauthenticated connection and from a player.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

This is the most exposed code in the engine. Everything else a server decodes has at least been through the handshake; this has not. Anybody who can reach the port can reach BeginAuthentication, and it reads a protocol version, a content hash, a credential blob and a reconnect token out of bytes that arrived from nowhere in particular.

Two connections a case, because there are two states and only one of them is easy to reach. A fresh connection exercises the pre-handshake path; a player that was admitted at construction and kept alive exercises the one behind it — ping, pong, and the user payloads everything above the session travels in. Fuzzing only the first would leave the branch that runs for every real packet of a real match untested.

Fields and properties (4)

  • public string Name

    What to call it on a command line and in a report.

  • public string What

    Which receive path this is, in one line.

  • public long Held

    How many players and half-finished handshakes the session is holding.

  • public long HeldCap

    How many it may hold: the one that was admitted, and headroom for a case that admits another before Maintain takes the previous connection away.

Methods (6)

  • public HandshakeTarget()

    Creates the target, with a server already listening and one player already in.

  • public long AllowanceFor(int inputLength)

    How many bytes an input may cause to be allocated.

  • public void Seed(ICollection<byte[]> corpus)

    Adds well-formed inputs for the mutator to start from.

  • public void Maintain()

    Puts the target back into a state worth fuzzing, before the next case.

  • public long Run(ReadOnlySpan<byte> input)

    Pushes one input through the decoder.

  • public void Dispose()

    Stops the session.

Used by (1)

  • FuzzTargetsVixen.Net.Fuzz