Skip to content

Commit 9840d3e

Browse files
committed
export createHash and createHmac
1 parent 444fe80 commit 9840d3e

File tree

1 file changed

+4
-56
lines changed

1 file changed

+4
-56
lines changed

index.js

Lines changed: 4 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,5 @@
11
var Buffer = require('buffer').Buffer
2-
var sha = require('./sha')
3-
var sha256 = require('./sha256')
42
var rng = require('./rng')
5-
var md5 = require('./md5')
6-
7-
var algorithms = {
8-
sha1: sha,
9-
sha256: sha256,
10-
md5: md5
11-
}
12-
13-
var blocksize = 64
14-
var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(0)
15-
function hmac(fn, key, data) {
16-
if(!Buffer.isBuffer(key)) key = new Buffer(key)
17-
if(!Buffer.isBuffer(data)) data = new Buffer(data)
18-
19-
if(key.length > blocksize) {
20-
key = fn(key)
21-
} else if(key.length < blocksize) {
22-
key = Buffer.concat([key, zeroBuffer], blocksize)
23-
}
24-
25-
var ipad = new Buffer(blocksize), opad = new Buffer(blocksize)
26-
for(var i = 0; i < blocksize; i++) {
27-
ipad[i] = key[i] ^ 0x36
28-
opad[i] = key[i] ^ 0x5C
29-
}
30-
31-
var hash = fn(Buffer.concat([ipad, data]))
32-
return fn(Buffer.concat([opad, hash]))
33-
}
34-
35-
function hash(alg, key) {
36-
alg = alg || 'sha1'
37-
var fn = algorithms[alg]
38-
var bufs = []
39-
var length = 0
40-
if(!fn) error('algorithm:', alg, 'is not yet supported')
41-
return {
42-
update: function (data) {
43-
if(!Buffer.isBuffer(data)) data = new Buffer(data)
44-
45-
bufs.push(data)
46-
length += data.length
47-
return this
48-
},
49-
digest: function (enc) {
50-
var buf = Buffer.concat(bufs)
51-
var r = key ? hmac(fn, key, buf) : fn(buf)
52-
bufs = null
53-
return enc ? r.toString(enc) : r
54-
}
55-
}
56-
}
573

584
function error () {
595
var m = [].slice.call(arguments).join(' ')
@@ -64,8 +10,10 @@ function error () {
6410
].join('\n'))
6511
}
6612

67-
exports.createHash = function (alg) { return hash(alg) }
68-
exports.createHmac = function (alg, key) { return hash(alg, key) }
13+
exports.createHash = require('./create-hash')
14+
15+
exports.createHmac = require('./create-hmac')
16+
6917
exports.randomBytes = function(size, callback) {
7018
if (callback && callback.call) {
7119
try {

0 commit comments

Comments
 (0)