From 1613055dfdfcb7c4835c3f2bd30e76f1c86b29e6 Mon Sep 17 00:00:00 2001 From: ston1th Date: Fri, 28 Dec 2018 19:10:22 +0100 Subject: [PATCH] use raw base64 as defined by rfc7515 --- encoding.go | 7 +++++++ jwt.go | 5 ++--- token.go | 7 +++---- 3 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 encoding.go diff --git a/encoding.go b/encoding.go new file mode 100644 index 0000000..73b81cf --- /dev/null +++ b/encoding.go @@ -0,0 +1,7 @@ +// Copyright (C) 2018 Marius Schellenberger + +package jwt + +import "encoding/base64" + +var enc = base64.RawURLEncoding diff --git a/jwt.go b/jwt.go index d77c7dd..44f82ec 100644 --- a/jwt.go +++ b/jwt.go @@ -6,7 +6,6 @@ package jwt import ( "crypto/hmac" "crypto/rand" - "encoding/base64" "encoding/json" "errors" "io" @@ -210,9 +209,9 @@ func (jwt *JWT) Sign(t *Token) (err error) { if err != nil { 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.signature = base64.URLEncoding.EncodeToString(t.rawSignature) + t.signature = enc.EncodeToString(t.rawSignature) t.raw = t.data + TokenSeparator + t.signature return } diff --git a/token.go b/token.go index 83aee75..a1f1dd1 100644 --- a/token.go +++ b/token.go @@ -3,7 +3,6 @@ package jwt import ( - "encoding/base64" "encoding/json" "strings" ) @@ -75,7 +74,7 @@ func DecodeToken(token string) (t *Token, err error) { } } t = new(Token) - header, err := base64.URLEncoding.DecodeString(parts[0]) + header, err := enc.DecodeString(parts[0]) if err != nil { return } @@ -83,7 +82,7 @@ func DecodeToken(token string) (t *Token, err error) { if err != nil { return } - claims, err := base64.URLEncoding.DecodeString(parts[1]) + claims, err := enc.DecodeString(parts[1]) if err != nil { return } @@ -91,7 +90,7 @@ func DecodeToken(token string) (t *Token, err error) { if err != nil { return } - t.rawSignature, err = base64.URLEncoding.DecodeString(parts[2]) + t.rawSignature, err = enc.DecodeString(parts[2]) t.signature = parts[2] t.data = parts[0] + TokenSeparator + parts[1] t.raw = token