From a00a154398922890bf52dbc09dfb60f6b801b1aa Mon Sep 17 00:00:00 2001 From: ston1th Date: Sat, 22 Sep 2018 16:34:10 +0200 Subject: [PATCH] added errors to blacklist --- blacklist.go | 14 ++++++++------ jwt.go | 9 ++++++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/blacklist.go b/blacklist.go index 9ecf662..b60a928 100644 --- a/blacklist.go +++ b/blacklist.go @@ -6,10 +6,10 @@ import "sync" // Blacklist is the blacklisting storage interface type Blacklist interface { - Add(string, int64) - Remove(string) + Add(string, int64) error + Remove(string) error Check(string) bool - Map() BlacklistMap + Map() (BlacklistMap, error) } // BlacklistMap is the blacklist map structure @@ -28,17 +28,19 @@ func NewMemBlacklist() *MemBlacklist { } // Add adds a new token signature with expiration time to the blacklist -func (mb *MemBlacklist) Add(sig string, exp int64) { +func (mb *MemBlacklist) Add(sig string, exp int64) error { mb.Lock() mb.list[sig] = exp mb.Unlock() + return nil } // Remove deletes a token signature from the blacklist -func (mb *MemBlacklist) Remove(sig string) { +func (mb *MemBlacklist) Remove(sig string) error { mb.Lock() delete(mb.list, sig) mb.Unlock() + return nil } // Check returns true if a token signature is blacklisted and false otherwise @@ -50,7 +52,7 @@ func (mb *MemBlacklist) Check(sig string) (ok bool) { } // Map returns the blacklist in the form of a iterable map structure for cleanup -func (mb *MemBlacklist) Map() (list BlacklistMap) { +func (mb *MemBlacklist) Map() (list BlacklistMap, err error) { list = make(BlacklistMap) mb.RLock() for k, v := range mb.list { diff --git a/jwt.go b/jwt.go index 76217f4..d77c7dd 100644 --- a/jwt.go +++ b/jwt.go @@ -143,8 +143,7 @@ func (jwt *JWT) Invalidate(t *Token) error { if !hmac.Equal(jwt.sum(t.Data(), h), t.RawSig()) { return ErrInvalid } - jwt.blacklist.Add(t.Sig(), exp) - return nil + return jwt.blacklist.Add(t.Sig(), exp) } // blacklisted checks if a token is blacklisted @@ -169,7 +168,11 @@ func (jwt *JWT) clean() { return } now := Now() - for k, v := range jwt.blacklist.Map() { + m, err := jwt.blacklist.Map() + if err != nil { + continue + } + for k, v := range m { if now > v { jwt.blacklist.Remove(k) }