Implement handshake Hello NetControlMessage, recv and send

This commit is contained in:
AeonLucid
2022-01-12 07:26:25 +01:00
parent 0a27bdd3c0
commit 65a28b32ef
50 changed files with 2768 additions and 156 deletions
@@ -76,6 +76,10 @@ public class StatelessConnectHandlerComponent : HandlerComponent
public StatelessConnectHandlerComponent(PacketHandler handler) : base(handler, nameof(StatelessConnectHandlerComponent))
{
SetActive(true);
RequiresHandshake = true;
_handshakeSecret = new byte[2][];
_activeSecret = byte.MaxValue;
_lastChallengeSuccessAddress = null;
@@ -202,9 +206,21 @@ public class StatelessConnectHandlerComponent : HandlerComponent
}
}
public override void Outgoing(FBitWriter packet, FOutPacketTraits traits)
public override void Outgoing(ref FBitWriter packet, FOutPacketTraits traits)
{
base.Outgoing(packet, traits);
const bool bHandshakePacket = false;
var newPacket = new FBitWriter(GetAdjustedSizeBits((int)packet.GetNumBits()) + 1, true, false);
if (_magicHeader.Length > 0)
{
newPacket.SerializeBits(_magicHeader, _magicHeader.Length);
}
newPacket.WriteBit(bHandshakePacket);
newPacket.SerializeBits(packet.GetData(), packet.GetNumBits());
packet = newPacket;
}
public override void IncomingConnectionless(FIncomingPacketRef packetRef)