#pragma once #include "tlibc/errors.h" #include "tlibc/magic.h" #include "tcp-chat/common_constants.h" #define AES_SESSION_KEY_SIZE 32 extern const Magic64 PacketHeader_MAGIC; // sizeof(PacketHeader) must be 64 typedef struct PacketHeader { Magic64 magic; u8 protocol_version; u8 _reserved1; u16 type; u32 _reserved4; /* size of request/response struct */ u64 content_size; } ATTRIBUTE_ALIGNED(64) PacketHeader; void PacketHeader_construct(PacketHeader* ptr, u8 protocol_version, u16 type, u64 content_size); Result(void) PacketHeader_validateMagic(PacketHeader* ptr); Result(void) PacketHeader_validateType(PacketHeader* ptr, u16 expected_type); Result(void) PacketHeader_validateContentSize(PacketHeader* ptr, u64 expected_size);