summaryrefslogtreecommitdiff
path: root/token.go
diff options
context:
space:
mode:
Diffstat (limited to 'token.go')
-rw-r--r--token.go33
1 files changed, 33 insertions, 0 deletions
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[:])
+}