-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.js
68 lines (57 loc) · 1.71 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
const
bindings = require('bindings'),
blake2 = bindings('blake2'),
P = require('p-promise')
;
const B = 0,
BP = 1,
S = 2,
SP = 3;
function wrapperFile(algo, fname)
{
if (typeof fname !== 'string')
return P.reject(new Error('You must pass a string filename as input.'));
var deferred = P.defer();
blake2.b2_file(algo, fname, (err, result) =>
{
if (err) deferred.reject(err);
else deferred.resolve(result);
});
return deferred.promise;
}
function sumBuffer(buffer, algorithm)
{
if (!algorithm)
algorithm = B;
if (!Buffer.isBuffer(buffer))
{
throw new TypeError('You must pass a buffer as input.');
}
return blake2.b2_buffer(algorithm, buffer);
}
function sumFile(fname, algorithm, callback)
{
if (typeof algorithm === 'function')
{
callback = algorithm;
algorithm = B;
}
return wrapperFile(algorithm, fname).nodeify(callback);
}
module.exports =
{
// convenience wrappers
sumBuffer,
sumFile,
sumStream: require('./streaming'),
ALGORITHMS: require('./streaming').ALGORITHMS,
// exposing the implementations
blake2: function(buffer) { return sumBuffer(buffer, B); },
blake2SMP: function(buffer) { return sumBuffer(buffer, BP); },
blake2_32: function(buffer) { return sumBuffer(buffer, S); },
blake2_32SMP: function(buffer) { return sumBuffer(buffer, SP); },
blake2File: function(fname, callback) { return wrapperFile(B, fname).nodeify(callback); },
blake2SMPFile: function(fname, callback) { return wrapperFile(BP, fname).nodeify(callback); },
blake2_32File: function(fname, callback) { return wrapperFile(S, fname).nodeify(callback); },
blake2_32SMPFile: function(fname, callback) { return wrapperFile(SP, fname).nodeify(callback); },
};