public sealed class HandshakeTargetThe 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 NameWhat to call it on a command line and in a report.
public string WhatWhich receive path this is, in one line.
public long HeldHow many players and half-finished handshakes the session is holding.
public long HeldCapHow 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