UNPKG

validify-string

Version:

Ensure accurate and secure input with our reliable string validation library.

46 lines (45 loc) 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.decodeJWT = exports.generateJWT = void 0; var crypto = require("crypto"); function base64urlEncode(data) { return Buffer.from(data).toString('base64') .replace(/\+/g, '-') .replace(/\//g, '_') .replace(/=/g, ''); } function base64urlDecode(data) { var buffer = Buffer.from(data, 'base64'); return buffer.toString(); } // Generate a JWT token with the given payload, secret and expiration time using HMAC SHA256 algorithm var generateJWT = function (payload, secret, expiresInSec) { if (expiresInSec === void 0) { expiresInSec = 3600; } var header = { alg: 'HS256', typ: 'JWT' }; var encodedHeader = base64urlEncode(JSON.stringify(header)); var encodedPayload = base64urlEncode(JSON.stringify(payload)); var signatureInput = "".concat(encodedHeader, ".").concat(encodedPayload); var signature = crypto.createHmac('sha256', secret).update(signatureInput).digest('base64'); var token = "".concat(encodedHeader, ".").concat(encodedPayload, ".").concat(base64urlEncode(signature)); return token; }; exports.generateJWT = generateJWT; // Decode the given JWT token var decodeJWT = function (token) { var parts = token.split('.'); if (parts.length !== 3) { console.error('Invalid JWT format'); return null; } var encodedHeader = parts[0], encodedPayload = parts[1]; var header = JSON.parse(base64urlDecode(encodedHeader)); var payload = JSON.parse(base64urlDecode(encodedPayload)); return { header: header, payload: payload }; }; exports.decodeJWT = decodeJWT;