darkID-prototype/darkID-login-example/tokens.go
darkID-login-example/tokens.goRaw
1package main
2
3import (
4 "fmt"
5 "time"
6
7 jwt "github.com/dgrijalva/jwt-go"
8)
9
10const (
11 signingKey = "this is the secret signing key"
12)
13
14var createdToken string
15
16func initializeToken() {
17 var err error
18 createdToken, err = newToken()
19 if err != nil {
20 fmt.Println("Creating token failed")
21 }
22}
23
24func newToken() (string, error) {
25 signingKeyB := []byte(signingKey)
26 // Create the token
27 token := jwt.New(jwt.SigningMethodHS256)
28 // Set some claims
29 claims := make(jwt.MapClaims)
30 claims["foo"] = "bar"
31 claims["exp"] = time.Now().Add(time.Hour * 72).Unix()
32 token.Claims = claims
33
34 // Sign and get the complete encoded token as a string
35 tokenString, err := token.SignedString(signingKeyB)
36 return tokenString, err
37}
38
39func parseToken(myToken string, myKey string) {
40 token, err := jwt.Parse(myToken, func(token *jwt.Token) (interface{}, error) {
41 return []byte(myKey), nil
42 })
43
44 if err == nil && token.Valid {
45 fmt.Println("Your token is valid. I like your style.")
46 } else {
47 fmt.Println("This token is terrible! I cannot accept this.")
48 }
49}