Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2016
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function generateAuthCode(secret) {
  2.     secret = new Buffer(secret, 'base64');
  3.  
  4.     var time = Math.floor(Date.now() / 1000);
  5.  
  6.     var buffer = new Buffer(8);
  7.     buffer.writeUInt32BE(0, 0); // This will stop working in 2038!
  8.     buffer.writeUInt32BE(Math.floor(time / 30), 4);
  9.  
  10.     var hmac = require('crypto').createHmac('sha1', secret);
  11.     hmac = hmac.update(buffer).digest();
  12.  
  13.     var start = hmac[19] & 0x0F;
  14.     hmac = hmac.slice(start, start + 4);
  15.  
  16.     var fullcode = hmac.readUInt32BE(0) & 0x7fffffff;
  17.  
  18.     var chars = '23456789BCDFGHJKMNPQRTVWXY';
  19.  
  20.     var code = '';
  21.     for(var i = 0; i < 5; i++) {
  22.         code += chars.charAt(fullcode % chars.length);
  23.         fullcode /= chars.length;
  24.     }
  25.  
  26.     return code;
  27. };
  28.  
  29. generateAuthCode('fWkXbmF1M6QfnGUzy+Z2RUb23JE=')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement