I don't know whether or not this is a super practical way of doing things but I'm lazy and it seems to work so gonna roll with it lol
segment size | usage |
---|---|
1 byte | u8 packet kind |
1 byte | u8 encrypt flag |
8 byte | u64 length of the packet contents |
4 byte | CRC32 packet contents checksum |
32 byte | SHA256 packet contents integrity check |
u64::MAX |
packet contents |
packet kind has defined values for packets but leaves many open for user defined packets to be added to the protocol
byte | packet kind |
---|---|
0x00-0xfb |
valid for custom packet usage |
0xfc |
message - a simple text packet |
0xfd |
leave - announces a disconnect |
0xfe |
join - announces a new connection |
0xff |
agreement - used to help generate an agreed upon key |
encrypt flag can be 0x00
for no encrypt or 0xff
for ring AEAD symmetric encrypt