implemented client-server connection, but found out RSA is broken
This commit is contained in:
@@ -24,6 +24,7 @@ Result(i32) EncryptedSocketTCP_recv(EncryptedSocketTCP* ptr,
|
||||
{
|
||||
Deferral(4);
|
||||
try(i32 received_size, i, socket_recv(ptr->sock, encrypted_buf, flags));
|
||||
//TODO: return something when received_size == 0 (socket has been closed)
|
||||
encrypted_buf.size = received_size;
|
||||
try(i32 decrypted_size, u, AESStreamDecryptor_decrypt(&ptr->dec, encrypted_buf, decrypted_buf));
|
||||
Return RESULT_VALUE(i, decrypted_size);
|
||||
|
||||
@@ -6,11 +6,13 @@
|
||||
|
||||
extern const Magic64 PacketHeader_MAGIC;
|
||||
|
||||
// sizeof(PacketHeader) must be 64
|
||||
typedef struct PacketHeader {
|
||||
Magic64 magic;
|
||||
u8 protocol_version;
|
||||
u8 _reserved;
|
||||
u8 _reserved1;
|
||||
u16 type;
|
||||
u32 _reserved4;
|
||||
u64 content_size;
|
||||
} __attribute__((aligned(64))) PacketHeader;
|
||||
|
||||
|
||||
@@ -8,3 +8,7 @@ Result(void) ClientHandshake_tryConstruct(ClientHandshake* ptr, Array(u8) sessio
|
||||
Return RESULT_VOID;
|
||||
}
|
||||
|
||||
void ServerHandshake_construct(ServerHandshake* ptr, u64 session_id){
|
||||
PacketHeader_construct(&ptr->header, PROTOCOL_VERSION, PacketType_ClientHandshake, sizeof(session_id));
|
||||
ptr->session_id = session_id;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#define PROTOCOL_VERSION 1 /* 1.0.0 */
|
||||
|
||||
|
||||
typedef enum PacketType {
|
||||
PacketType_Invalid,
|
||||
PacketType_ErrorMessage,
|
||||
@@ -11,11 +12,13 @@ typedef enum PacketType {
|
||||
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];
|
||||
@@ -28,3 +31,5 @@ typedef struct ServerHandshake {
|
||||
PacketHeader header;
|
||||
u64 session_id;
|
||||
} ServerHandshake;
|
||||
|
||||
void ServerHandshake_construct(ServerHandshake* ptr, u64 session_id);
|
||||
|
||||
Reference in New Issue
Block a user