JSFiddle - React, Tailwind, and code Playground
by sqren
JavaScript
function parse_signed_request(signed_request, secret) {
var signed_request_array = signed_request.split('.');
var encoded_sig = signed_request_array[0];
var payload = signed_request_array[1];
// decode the data
var sig = atob(encoded_sig);
var data = atob(payload);
// error
if (JSON.parse(data).algorithm.toUpperCase() !== 'HMAC-SHA256') {
return null;
}
// check sig
var expected_sig = require("crypto").createHmac('SHA256', 'secret').update('payload').digest('base64');
// error
if (sig !== expected_sig) {
return null;
}
return data;
}
parse_signed_request( "DOMFfnnAOOFEULGukrMbbXw1Fj1cTJnSNt8DGRAmQ6Y.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImNvZGUiOiIyLkFRRDhCU2JGV084MmFnRFouMzYwMC4xMzQ1NjA0NDAwLjEtNjQxODcwMjY0fHpkeFIxcDByMEgzb1pRekxURlZEbmNXX1YwbyIsImlzc3VlZF9hdCI6MTM0NTYwMDYxMSwidXNlcl9pZCI6IjY0MTg3MDI2NCJ9", "ced9f215768727d6bb10eefcc11ba5de");