diff --git a/lib/jwe.js b/lib/jwe.js index 17fa85d..0e1fc4a 100755 --- a/lib/jwe.js +++ b/lib/jwe.js @@ -1,4 +1,5 @@ const crypto = require('crypto'); +const zlib = require('zlib'); const responder = require('./common.js').responder; const buf2b64url = require('./common.js').buf2b64url; const payloadVerifications = require('./common.js').payloadVerifications; @@ -201,6 +202,15 @@ function decryptJwe(parsed, aMatch, eMatch, key, cb) { parsed.error = { message: `Could not decrypt token. ${error.message}` }; return responder(null, parsed, cb); } + // Optional inflate + if (parsed.header.zip === 'DEF') { + try { + plain = zlib.inflateRawSync(Buffer.from(plain)) + } catch (error) { + parsed.error = { message: `Could not inflate plain payload. ${error.message}` }; + return responder(null, parsed, cb); + } + } try { parsed.payload = JSON.parse(plain); } catch (error) {