diff options
Diffstat (limited to 'token.go')
| -rw-r--r-- | token.go | 33 |
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[:]) +} |
