From e8ff326f0e5bd61fb0a8c22c48f296fcf0249830 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Sat, 15 Nov 2025 11:54:00 +0100 Subject: backend implement auth-service --- src/storage/session-manager/session.zig | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/storage/session-manager/session.zig (limited to 'src/storage/session-manager/session.zig') diff --git a/src/storage/session-manager/session.zig b/src/storage/session-manager/session.zig new file mode 100644 index 0000000..943334b --- /dev/null +++ b/src/storage/session-manager/session.zig @@ -0,0 +1,34 @@ +const std = @import("std"); +const User = @import("../user.zig"); + +const Self = @This(); + +const fingerprint_size = 512; + +age: std.time.Instant, +info: User.Info, +fingerprint: []u8, + +pub fn init(allocator: std.mem.Allocator, info: User.Info) !Self { + var self: Self = undefined; + self.info = try info.clone(allocator); + self.fingerprint = try allocator.alloc(u8, fingerprint_size); + try self.reset(); + + return self; +} + +pub fn reset(self: *Self) !void { + var raw_buffer: [fingerprint_size / 2]u8 = undefined; + std.crypto.random.bytes(&raw_buffer); + + var writer = std.Io.Writer.fixed(self.fingerprint); + writer.print("{x}", .{raw_buffer}) catch unreachable; + + self.age = try std.time.Instant.now(); +} + +pub fn deinit(self: *const Self, allocator: std.mem.Allocator) void { + self.info.deinit(allocator); + allocator.free(self.fingerprint); +} -- cgit v1.2.3-70-g09d2