All files decode.js

92.86% Statements 13/14
50% Branches 1/2
100% Functions 1/1
92.86% Lines 13/14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 271x       1x   1x 1x 1x   1x 1x 1x   1x 1x 1x 1x               1x  
const Crypto = require('crypto');
 
function DecodeSignature(key, queryString) {
 
	const sharedSecret = key;
 
	const _ = queryString.split(".");
	const query = Buffer.from(_[0], 'base64').toString('ascii'),
		retrievedSignature = _[1];
 
	const computedSignature = Crypto.createHmac('sha256', sharedSecret).update(_[0]).digest('base64');
	const computedSignatureBuffer = Buffer.from(computedSignature, 'base64');
	const retrievedSignatureBuffer = Buffer.from(retrievedSignature, 'base64');
 
	try {
		const valid = Crypto.timingSafeEqual(computedSignatureBuffer, retrievedSignatureBuffer);
		Eif (valid) {
			return query;
		}
	}
	catch (e) {
		return e;
	}
}
 
module.exports = DecodeSignature;