jose/lib/jwt/decode.js
2019-01-20 19:37:27 +01:00

29 lines
672 B
JavaScript

const base64url = require('../help/base64url')
const { TODO } = require('../errors')
module.exports = (jwt, { complete = false } = {}) => {
if (typeof jwt !== 'string') {
throw new TypeError('jwt must be a string')
}
const parts = jwt.split('.')
if (parts.length === 5) {
throw new TODO('jwt appears to be encrypted')
}
if (parts.length !== 3) {
throw new TODO('jwt malformed')
}
let [header, payload] = parts
try {
header = base64url.JSON.decode(header)
payload = base64url.JSON.decode(payload)
} catch (err) {
throw new TODO('jwt malformed')
}
return complete ? { header, payload, signature: parts[2] } : payload
}