From 3b28132b56836d2f7bd3ce01430d334eb7bffa3b Mon Sep 17 00:00:00 2001 From: xengineering Date: Sun, 24 May 2026 14:12:03 +0200 Subject: Add POST /api/registration This URL sets a random 32 octet token as cookie `token` in Base64 encoding. The SHA256 hash of the binary token is written as response also in Base64 encoding. --- token.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 token.go (limited to 'token.go') diff --git a/token.go b/token.go new file mode 100644 index 0000000..bfb77d2 --- /dev/null +++ b/token.go @@ -0,0 +1,33 @@ +package main + +import ( + "crypto/rand" + "crypto/sha256" + "encoding/base64" +) + +type Token struct { + secret []byte +} + +func NewToken() (Token, error) { + token := Token{} + token.secret = make([]byte, 32) + + _, err := rand.Read(token.secret) + if err != nil { + return token, err + } + + return token, nil +} + +func (t Token) Public() string { + hash := sha256.Sum256(t.secret) + + return base64.StdEncoding.EncodeToString(hash[:]) +} + +func (t Token) Private() string { + return base64.StdEncoding.EncodeToString(t.secret[:]) +} -- cgit v1.3