From 49cc88def2f9edea59e79ca37f41400ad870579e Mon Sep 17 00:00:00 2001 From: Aargh Rai Date: Wed, 27 May 2026 17:13:14 +0530 Subject: went through all, but comms is working --- src/server/ws_key.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/server/ws_key.c (limited to 'src/server/ws_key.c') diff --git a/src/server/ws_key.c b/src/server/ws_key.c new file mode 100644 index 0000000..ca66b81 --- /dev/null +++ b/src/server/ws_key.c @@ -0,0 +1,28 @@ +static const char *GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + +void websocket_accept_key(const char *client_key, char *output) { + char buf[256]; + snprintf(buf, sizeof(buf), "%s%s", client_key, GUID); + + unsigned char hash[SHA_DIGEST_LENGTH]; + SHA1((unsigned char *)buf, strlen(buf), hash); + base64_encode(hash, SHA_DIGEST_LENGTH, output); +} + +char *find_websocket_key(char *req) { + char *p = strstr(req, "Sec-WebSocket-Key:"); + + if (!p) return NULL; + + p += strlen("Sec-WebSocket-Key:"); + + while (*p == ' ') p++; + + static char key[128]; + int i = 0; + while (*p && *p != '\r' && *p != '\n') + key[i++] = *p++; + + key[i] = 0; + return key; +} -- cgit v1.2.3