On 17/03/2021 07:55, Laura Zelenku wrote: > Packet that respects WG protocol contains Type on first byte followed by > three reserved bytes. Because wireguard-go implementation uses element > pools it is required to make sure that reserved bytes are cleared for > outgoing traffic (can get dirty by "bad" clients). Clearing reserved > bytes is also for backwards compatibility. Encoding the message type as a little-endian 32-bit integer already takes care of setting the reserved bytes to zero; e.g. for a packet of message type 1 (handshake initiation), its little-endian 32-bit encoding is the following sequence of bytes: [ 0x01 0x00 0x00 0x00 ]. This is also the approach used for checking message types on the receiving end, so packets whose reserved bytes are non-zero are already discarded as being those of unknown types of message. Regards, Aaron Jones