|
/* |
|
We are trying to mimick: |
|
make_cookie_hash(UserName, Secret, TimeStamp) -> |
|
SessionData = UserName ++ ":" ++ erlang:integer_to_list(TimeStamp, 16), |
|
Hash = crypto:sha_mac(Secret, SessionData), |
|
couch_util:encodeBase64Url(SessionData ++ ":" ++ ?b2l(Hash)). |
|
|
|
SessionData = string(Username) + ":" + string(TimeStamp) |
|
Hsah = sha_mac(string(Secret), string(SessionData)) |
|
return base64_encode(string(SessionData) + ":" + string(Hash)) |
|
|
|
might have to use https://github.com/iriscouch/erlang.js or https://github.com/okeuday/erlang_js |
|
|
|
UserName: "jan" |
|
Secret: <<"4ed13457964f05535fbb54c0e9f77a83d5513283df4f649c72757a91aa30bdde">> |
|
TimeStamp: 1449689785 |
|
SessionData: "jan:566882B9" |
|
Hash: <<65,10,223,237,82,70,199,168,235,35,81,29,249,62,154,105,58,204,236,102>> |
|
R: <<"amFuOjU2Njg4MkI5OkEK3-1SRseo6yNRHfk-mmk6zOxm">> |
|
|
|
|
|
secret: 4ed13457964f05535fbb54c0e9f77a83 |
|
salt: d5513283df4f649c72757a91aa30bdde |
|
|
|
hash: amFuOjU2Njg4MTc1OoX6TDq2hsQk550vVKTkzbhlgSJe |
|
|
|
*/ |
|
var crypto = require('crypto') |
|
|
|
var make_cookie_hash = function(UserName, Secret, TimeStamp) { |
|
var ts = TimeStamp.toString(16).toUpperCase() |
|
var SessionData = UserName + ':' + ts |
|
var hmac = crypto.createHmac('sha1', Secret) |
|
hmac.update(SessionData) |
|
var hash = hmac.digest() |
|
|
|
var result = Buffer.concat([ |
|
new Buffer(SessionData + ':'), |
|
new Buffer(hash) |
|
]).toString('base64') |
|
|
|
console.log('UserName: ', UserName) |
|
console.log('Secret: ', Secret) |
|
console.log('TimeStamp: ', TimeStamp) |
|
console.log('SessionData: ', SessionData) |
|
console.log('hash: ', hash) |
|
console.log('result: ', result) |
|
return result.replace(/\+/g, '-') |
|
} |
|
|
|
var timestamp = 1449689785 |
|
var username = 'jan' |
|
var secret = '4ed13457964f05535fbb54c0e9f77a83d5513283df4f649c72757a91aa30bdde' // server secret + user salt |
|
|
|
var result = make_cookie_hash(username, secret, timestamp) |
|
|
|
console.log(); |
|
console.log('WANT: amFuOjU2Njg4MkI5OkEK3-1SRseo6yNRHfk-mmk6zOxm') |
|
console.log('GOT: ', result) |
No wait - the node version is actually longer. doh!