From 77e9781df5be8a8b658151c2363e692825bae4f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment?= Date: Wed, 6 Mar 2019 23:19:33 +0000 Subject: [PATCH 1/2] Add payload to decode thrown errors I wanted to be able to use payload from a expired token, here i have to re-decode it, so i tought it wouldn't cost much to pass it along side the error --- lib/jwt.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/jwt.js b/lib/jwt.js index ab63f69..be23908 100644 --- a/lib/jwt.js +++ b/lib/jwt.js @@ -83,23 +83,23 @@ jwt.decode = function jwt_decode(token, key, noVerify, algorithm) { var signingMethod = algorithmMap[algorithm || header.alg]; var signingType = typeMap[algorithm || header.alg]; if (!signingMethod || !signingType) { - throw new Error('Algorithm not supported'); + throw addPayload(new Error('Algorithm not supported'), payload); } // verify signature. `sign` will return base64 string. var signingInput = [headerSeg, payloadSeg].join('.'); if (!verify(signingInput, key, signingMethod, signingType, signatureSeg)) { - throw new Error('Signature verification failed'); + throw addPayload(new Error('Signature verification failed'), payload); } // Support for nbf and exp claims. // According to the RFC, they should be in seconds. if (payload.nbf && Date.now() < payload.nbf*1000) { - throw new Error('Token not yet active'); + throw addPayload(new Error('Token not yet active'), payload); } if (payload.exp && Date.now() > payload.exp*1000) { - throw new Error('Token expired'); + throw addPayload(new Error('Token expired'), payload); } } @@ -206,3 +206,8 @@ function base64urlEncode(str) { function base64urlEscape(str) { return str.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); } + +function addPayload(error, payload) { + error.payload = payload + return error +} From 9475f14ba29f0b57d846c1e243db3f3b5042104d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment?= Date: Wed, 6 Mar 2019 23:20:48 +0000 Subject: [PATCH 2/2] Forgot semi colons Sorry ;) --- lib/jwt.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jwt.js b/lib/jwt.js index be23908..a41e3d7 100644 --- a/lib/jwt.js +++ b/lib/jwt.js @@ -208,6 +208,6 @@ function base64urlEscape(str) { } function addPayload(error, payload) { - error.payload = payload - return error + error.payload = payload; + return error; }