/** * @author gchq77703 [] * @copyright Crown Copyright 2018 * @license Apache-2.0 */ import Operation from "../Operation"; import jwt from "jsonwebtoken"; import OperationError from "../errors/OperationError"; /** * JWT Decode operation */ class JWTDecode extends Operation { /** * JWTDecode constructor */ constructor() { super(); this.name = "JWT Decode"; this.module = "Crypto"; this.description = "Decodes a JSON Web Token without checking whether the provided secret / private key is valid. Use 'JWT Verify' to check if the signature is valid as well."; this.infoURL = "https://wikipedia.org/wiki/JSON_Web_Token"; this.inputType = "string"; this.outputType = "JSON"; this.args = []; } /** * @param {string} input * @param {Object[]} args * @returns {JSON} */ run(input, args) { try { const decoded = jwt.decode(input, { json: true, complete: true }); return decoded.payload; } catch (err) { throw new OperationError(err); } } } export default JWTDecode;