use raw base64 as defined by rfc7515

This commit is contained in:
ston1th 2018-12-28 19:10:22 +01:00
commit 1613055dfd
3 changed files with 12 additions and 7 deletions

7
encoding.go Normal file
View file

@ -0,0 +1,7 @@
// Copyright (C) 2018 Marius Schellenberger
package jwt
import "encoding/base64"
var enc = base64.RawURLEncoding

5
jwt.go
View file

@ -6,7 +6,6 @@ package jwt
import ( import (
"crypto/hmac" "crypto/hmac"
"crypto/rand" "crypto/rand"
"encoding/base64"
"encoding/json" "encoding/json"
"errors" "errors"
"io" "io"
@ -210,9 +209,9 @@ func (jwt *JWT) Sign(t *Token) (err error) {
if err != nil { if err != nil {
return return
} }
t.data = base64.URLEncoding.EncodeToString(head) + TokenSeparator + base64.URLEncoding.EncodeToString(claims) t.data = enc.EncodeToString(head) + TokenSeparator + enc.EncodeToString(claims)
t.rawSignature = jwt.sum(t.data, h) t.rawSignature = jwt.sum(t.data, h)
t.signature = base64.URLEncoding.EncodeToString(t.rawSignature) t.signature = enc.EncodeToString(t.rawSignature)
t.raw = t.data + TokenSeparator + t.signature t.raw = t.data + TokenSeparator + t.signature
return return
} }

View file

@ -3,7 +3,6 @@
package jwt package jwt
import ( import (
"encoding/base64"
"encoding/json" "encoding/json"
"strings" "strings"
) )
@ -75,7 +74,7 @@ func DecodeToken(token string) (t *Token, err error) {
} }
} }
t = new(Token) t = new(Token)
header, err := base64.URLEncoding.DecodeString(parts[0]) header, err := enc.DecodeString(parts[0])
if err != nil { if err != nil {
return return
} }
@ -83,7 +82,7 @@ func DecodeToken(token string) (t *Token, err error) {
if err != nil { if err != nil {
return return
} }
claims, err := base64.URLEncoding.DecodeString(parts[1]) claims, err := enc.DecodeString(parts[1])
if err != nil { if err != nil {
return return
} }
@ -91,7 +90,7 @@ func DecodeToken(token string) (t *Token, err error) {
if err != nil { if err != nil {
return return
} }
t.rawSignature, err = base64.URLEncoding.DecodeString(parts[2]) t.rawSignature, err = enc.DecodeString(parts[2])
t.signature = parts[2] t.signature = parts[2]
t.data = parts[0] + TokenSeparator + parts[1] t.data = parts[0] + TokenSeparator + parts[1]
t.raw = token t.raw = token