validify-string
Version:
Ensure accurate and secure input with our reliable string validation library.
46 lines (45 loc) • 1.69 kB
JavaScript
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;
;