arnaucube
arnaucube/blockchainIDsystemPublic Self-hosted repository
blockchainIDsystem/serverIDsigner/tokens.go
serverIDsigner/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}