diff options
| author | xengineering <me@xengineering.eu> | 2026-06-27 21:47:51 +0200 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2026-06-27 21:52:31 +0200 |
| commit | 94f5bcd677c5c3c6032e3d2973b416644df55e42 (patch) | |
| tree | 554135684bba22ffdb328078f8dff0c93139dd41 | |
| parent | 132990e985751e40c263224a62983c8013409a36 (diff) | |
| download | finserv-94f5bcd677c5c3c6032e3d2973b416644df55e42.tar finserv-94f5bcd677c5c3c6032e3d2973b416644df55e42.tar.zst finserv-94f5bcd677c5c3c6032e3d2973b416644df55e42.zip | |
Add NewToken()auth
This creates a new token for session management.
| -rw-r--r-- | token.go | 19 | ||||
| -rw-r--r-- | token_test.go | 30 |
2 files changed, 49 insertions, 0 deletions
diff --git a/token.go b/token.go new file mode 100644 index 0000000..bdabcc4 --- /dev/null +++ b/token.go @@ -0,0 +1,19 @@ +package main + +import ( + "crypto/rand" +) + +type Token struct { + data []byte +} + +func NewToken() Token { + t := Token{} + + t.data = make([]byte, 32) + + _, _ = rand.Read(t.data) + + return t +} diff --git a/token_test.go b/token_test.go new file mode 100644 index 0000000..66c131b --- /dev/null +++ b/token_test.go @@ -0,0 +1,30 @@ +package main + +import ( + "testing" + "reflect" +) + +func TestNewTokenNoInit(t *testing.T) { + empty := Token{} + + token := NewToken() + + if reflect.DeepEqual(empty, token) { + t.Fatalf("New token is not initialized.") + } +} + +func TestNewTokenLowEntropy(t *testing.T) { + token := NewToken() + + first := token.data[0] + + for _, v := range token.data { + if v != first { + return // at least one other byte contained + } + } + + t.Fatalf("All bytes in new token are the same.") +} |
