From 1bdb6009cf9586edb1b8bcf3618f32436a8b6929 Mon Sep 17 00:00:00 2001 From: ston1th Date: Thu, 13 Sep 2018 15:58:24 +0200 Subject: [PATCH] added utc time functions --- jwt.go | 10 +++++----- time.go | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 time.go diff --git a/jwt.go b/jwt.go index e586aa3..0165de2 100644 --- a/jwt.go +++ b/jwt.go @@ -135,7 +135,7 @@ func (jwt *JWT) Invalidate(t *Token) error { switch { case exp == 0: return ErrMissingExp - case time.Now().UTC().Unix() > exp: + case Now() > exp: return ErrExp } if !hmac.Equal(jwt.sum(t.Data(), h), t.RawSig()) { @@ -190,12 +190,12 @@ func (jwt *JWT) Sign(t *Token) (err error) { if h == nil { return ErrUnsupportedAlg } - now := time.Now().UTC() + now := time.Now() if _, ok := t.Claims.Get(ExpClaim); !ok { - t.Claims.Set(ExpClaim, now.Add(jwt.expiry).Unix()) + t.Claims.Set(ExpClaim, newExp(now, jwt.expiry)) } if _, ok := t.Claims.Get(NbfClaim); !ok { - t.Claims.Set(NbfClaim, now.Unix()) + t.Claims.Set(NbfClaim, NewNbf(now)) } head, err := json.Marshal(t.Header) if err != nil { @@ -222,7 +222,7 @@ func (jwt *JWT) Verify(t *Token) error { return err } } - now := time.Now().UTC().Unix() + now := Now() if t.Header.GetString(TypClaim) != Typ { return ErrNoJWT } diff --git a/time.go b/time.go new file mode 100644 index 0000000..71b10ca --- /dev/null +++ b/time.go @@ -0,0 +1,22 @@ +package jwt + +import "time" + +// Now returns the current time in UTC Unix format +func Now() int64 { + return NewNbf(time.Now()) +} + +// NewNbf returns a new 'not before' date +func NewNbf(t time.Time) int64 { + return t.UTC().Unix() +} + +// NewExp returns a new expiration date +func NewExp(d time.Duration) int64 { + return newExp(time.Now(), d) +} + +func newExp(t time.Time, d time.Duration) int64 { + return t.UTC().Add(d).Unix() +}