· 6 years ago · Jun 21, 2019, 11:44 AM
1const crypto = require('crypto');
2
3module.exports = (secretKey, ttl, signature) => {
4 try {
5 let sign = Buffer.from(signature, 'base64').toString('utf8');
6 sign = JSON.parse(sign);
7
8 if (!sign.timestamp || !sign.hash) return false;
9
10 const signedHash = crypto
11 .createHmac('sha1', secretKey)
12 .update(sign.timestamp)
13 .digest('hex');
14
15 if (signedHash !== sign.hash || sign.timestamp < (((new Date().getTime() / 1000) | 0) - ttl).toString()) return false;
16
17 return true;
18 } catch (err) {
19 return false;
20 }
21};