couchdb-generate-session-id
Advanced tools
Comparing version 1.0.3 to 2.0.0
11
index.js
@@ -6,8 +6,11 @@ module.exports = generateSessionId | ||
var base64url = require('base64url') | ||
var validate = require('aproba') | ||
function generateSessionId (options) { | ||
var timestamp = options.timestamp.toString(16).toUpperCase() | ||
var sessionData = options.username + ':' + timestamp | ||
var hmac = crypto.createHmac('sha1', options.salt + options.secret).update(sessionData) | ||
function generateSessionId (username, usersalt, serversecret, timestamp) { | ||
validate('SSSN', arguments) | ||
var timestamp16 = timestamp.toString(16).toUpperCase() | ||
var sessionData = username + ':' + timestamp16 | ||
var hmac = crypto.createHmac('sha1', usersalt + serversecret).update(sessionData) | ||
return base64url(Buffer.concat([ | ||
@@ -14,0 +17,0 @@ new Buffer(sessionData + ':'), |
@@ -33,5 +33,6 @@ { | ||
"dependencies": { | ||
"aproba": "^1.0.1", | ||
"base64url": "^1.0.5" | ||
}, | ||
"version": "1.0.3" | ||
"version": "2.0.0" | ||
} |
@@ -15,11 +15,11 @@ # couchdb-generate-session-id | ||
var sessionId = generateSessionId({ | ||
username: 'pat', | ||
salt: '24eb90e9e1343977b8323857287ffca4', | ||
secret: '78875068a1979fb910d5d8f37d316aa4' | ||
timestamp: 1449689785 | ||
}) | ||
var sessionId = generateSessionId( | ||
'pat', | ||
'24eb90e9e1343977b8323857287ffca4', | ||
'78875068a1979fb910d5d8f37d316aa4', | ||
1449689785 | ||
) | ||
``` | ||
## Options | ||
## Arguments | ||
@@ -40,3 +40,3 @@ <table> | ||
<tr> | ||
<th align="left"><strong>salt</strong></th> | ||
<th align="left"><strong>usersalt</strong></th> | ||
<td>String</td> | ||
@@ -46,3 +46,3 @@ <td><code>salt</code> property of <code>\_users</code> doc</td> | ||
<tr> | ||
<th align="left"><strong>secret</strong></th> | ||
<th align="left"><strong>serversecret</strong></th> | ||
<td>String</td> | ||
@@ -49,0 +49,0 @@ <td><code>couch_httpd_auth.secret</code> of CouchDB configuration</td> |
@@ -5,11 +5,10 @@ var test = require('tap').test | ||
test('valid options', function (t) { | ||
var options = { | ||
username: 'jan', | ||
timestamp: 1449689785, | ||
salt: '4ed13457964f05535fbb54c0e9f77a83', | ||
secret: 'd5513283df4f649c72757a91aa30bdde' | ||
} | ||
test('valid arguments', function (t) { | ||
var expected = 'amFuOjU2Njg4MkI5OkEK3-1SRseo6yNRHfk-mmk6zOxm' | ||
var result = generateSessionId(options) | ||
var result = generateSessionId( | ||
'jan', | ||
'4ed13457964f05535fbb54c0e9f77a83', | ||
'd5513283df4f649c72757a91aa30bdde', | ||
1449689785 | ||
) | ||
@@ -20,1 +19,17 @@ t.is(result, expected, 'returns expected result') | ||
}) | ||
test('invalid arguments', function (t) { | ||
t.throws(generateSessionId, {code: 'EMISSINGARG'}, 'missing arguments') | ||
t.throws(generateSessionId.bind(null, '1', '2', '3', 4, 5), {code: 'ETOOMANYARGS'}, 'too many arguments') | ||
t.test('types', function (tt) { | ||
tt.throws(generateSessionId.bind(null, 1, '2', '3', 4), {code: 'EINVALIDTYPE'}) | ||
tt.throws(generateSessionId.bind(null, '1', 2, '3', 4), {code: 'EINVALIDTYPE'}) | ||
tt.throws(generateSessionId.bind(null, '1', '2', 3, 4), {code: 'EINVALIDTYPE'}) | ||
tt.throws(generateSessionId.bind(null, '1', '2', '3', '4'), {code: 'EINVALIDTYPE'}) | ||
tt.end() | ||
}) | ||
t.end() | ||
}) |
6229
39
2
+ Addedaproba@^1.0.1
+ Addedaproba@1.2.0(transitive)