summaryrefslogtreecommitdiff
path: root/src/server/base64.c
diff options
context:
space:
mode:
authorAargh Rai <aargh.rai+git@gmail.com>2026-05-27 17:13:14 +0530
committerAargh Rai <aargh.rai+git@gmail.com>2026-05-27 17:13:14 +0530
commit49cc88def2f9edea59e79ca37f41400ad870579e (patch)
tree55d84a76920dd4af7a7a2054d553ce29d11e726c /src/server/base64.c
parent380d67bada7544f5f10cecc8c9dff7ed2f79e187 (diff)
went through all, but comms is working
Diffstat (limited to 'src/server/base64.c')
-rw-r--r--src/server/base64.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/server/base64.c b/src/server/base64.c
new file mode 100644
index 0000000..3400cfb
--- /dev/null
+++ b/src/server/base64.c
@@ -0,0 +1,27 @@
+static const char b64[] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789+/";
+
+void base64_encode(
+ const unsigned char *in,
+ size_t len,
+ char *out
+) {
+ size_t i, j = 0;
+
+ for (i = 0; i < len; i += 3) {
+ unsigned v = in[i] << 16;
+
+ if (i + 1 < len) v |= in[i + 1] << 8;
+ if (i + 2 < len) v |= in[i + 2];
+
+ out[j++] = b64[(v >> 18) & 63];
+ out[j++] = b64[(v >> 12) & 63];
+
+ out[j++] = (i + 1 < len) ? b64[(v >> 6) & 63] : '=';
+ out[j++] = (i + 2 < len) ? b64[v & 63] : '=';
+ }
+
+ out[j] = 0;
+}