25 lines
765 B
C
25 lines
765 B
C
#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);
|