Skip to content

Commit 33e1731

Browse files
committed
Fix compatibility with crypto.DEFAULT_ENCODING global changes
1 parent 203a06c commit 33e1731

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

HISTORY.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
unreleased
2+
==========
3+
4+
* Fix compatibility with `crypto.DEFAULT_ENCODING` global changes
5+
16
2.0.6 / 2015-02-13
27
==================
38

index.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11

2+
/**
3+
* Module dependencies.
4+
*/
5+
26
var rndm = require('rndm')
37
var scmp = require('scmp')
48
var uid = require('uid-safe')
59
var crypto = require('crypto')
610
var escape = require('base64-url').escape
711

12+
/**
13+
* Module exports.
14+
*/
15+
816
module.exports = csrfTokens
17+
module.exports.tokenize = tokenize
918

1019
function csrfTokens(options) {
1120
options = options || {}
@@ -61,12 +70,10 @@ function csrfTokens(options) {
6170
}
6271
}
6372

64-
csrfTokens.tokenize = function tokenize(secret, salt) {
73+
function tokenize(secret, salt) {
6574
var hash = escape(crypto
6675
.createHash('sha1')
67-
.update(salt)
68-
.update('-')
69-
.update(secret)
76+
.update(salt + '-' + secret, 'ascii')
7077
.digest('base64'))
7178
return salt + '-' + hash
7279
}

test/test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
var assert = require('assert')
3+
var crypto = require('crypto')
34

45
var csrf = require('..')()
56

@@ -40,6 +41,25 @@ describe('CSRF Tokens', function () {
4041
assert(!~token.indexOf('='))
4142
}
4243
})
44+
45+
describe('when crypto.DEFAULT_ENCODING altered', function () {
46+
var defaultEncoding
47+
48+
before(function () {
49+
defaultEncoding = crypto.DEFAULT_ENCODING
50+
crypto.DEFAULT_ENCODING = 'hex'
51+
})
52+
53+
after(function () {
54+
crypto.DEFAULT_ENCODING = defaultEncoding
55+
})
56+
57+
it('should creaate a token', function () {
58+
var token = csrf.create(secret)
59+
assert.equal('string', typeof token)
60+
assert(~token.indexOf('-'))
61+
})
62+
})
4363
})
4464

4565
describe('.verify()', function () {

0 commit comments

Comments
 (0)