31 lines
748 B
C
31 lines
748 B
C
#pragma once
|
|
#include "tlibc/errors.h"
|
|
#include "network/tcp-chat-protocol/constant.h"
|
|
|
|
#define PROTOCOL_VERSION 1 /* 1.0.0 */
|
|
|
|
typedef enum PacketType {
|
|
PacketType_Invalid,
|
|
PacketType_ErrorMessage,
|
|
PacketType_ClientHandshake,
|
|
PacketType_ServerHandshake,
|
|
} __attribute__((__packed__)) PacketType;
|
|
|
|
typedef struct ErrorMessage {
|
|
PacketHeader header;
|
|
/* content stream of size `header.content_size` */
|
|
} ErrorMessage;
|
|
|
|
typedef struct ClientHandshake {
|
|
PacketHeader header;
|
|
u8 session_key[AES_SESSION_KEY_SIZE];
|
|
} ClientHandshake;
|
|
|
|
Result(void) ClientHandshake_tryConstruct(ClientHandshake* ptr, Array(u8) session_key);
|
|
|
|
|
|
typedef struct ServerHandshake {
|
|
PacketHeader header;
|
|
u64 session_id;
|
|
} ServerHandshake;
|