| 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
69
70
71
72
 | | var tape = require('tape') |  | var vectors = require('hash-test-vectors') |  | // var from = require('bops/typedarray/from') |  | var Buffer = require('safe-buffer').Buffer |  |   |  | var createHash = require('../') |  |   |  | function makeTest (alg, i, verbose) { |  |   var v = vectors[i] |  |   |  |   tape(alg + ': NIST vector ' + i, function (t) { |  |     if (verbose) { |  |       console.log(v) |  |       console.log('VECTOR', i) |  |       console.log('INPUT', v.input) |  |       console.log(Buffer.from(v.input, 'base64').toString('hex')) |  |     } |  |   |  |     var buf = Buffer.from(v.input, 'base64') |  |     t.equal(createHash(alg).update(buf).digest('hex'), v[alg]) |  |   |  |     i = ~~(buf.length / 2) |  |     var buf1 = buf.slice(0, i) |  |     var buf2 = buf.slice(i, buf.length) |  |   |  |     console.log(buf1.length, buf2.length, buf.length) |  |     console.log(createHash(alg)._block.length) |  |   |  |     t.equal( |  |       createHash(alg) |  |         .update(buf1) |  |         .update(buf2) |  |         .digest('hex'), |  |       v[alg] |  |     ) |  |   |  |     var j, buf3 |  |   |  |     i = ~~(buf.length / 3) |  |     j = ~~(buf.length * 2 / 3) |  |     buf1 = buf.slice(0, i) |  |     buf2 = buf.slice(i, j) |  |     buf3 = buf.slice(j, buf.length) |  |   |  |     t.equal( |  |       createHash(alg) |  |         .update(buf1) |  |         .update(buf2) |  |         .update(buf3) |  |         .digest('hex'), |  |       v[alg] |  |     ) |  |   |  |     setTimeout(function () { |  |       // avoid "too much recursion" errors in tape in firefox |  |       t.end() |  |     }) |  |   }) |  | } |  |   |  | if (process.argv[2]) { |  |   makeTest(process.argv[2], parseInt(process.argv[3], 10), true) |  | } else { |  |   vectors.forEach(function (v, i) { |  |     makeTest('sha', i) |  |     makeTest('sha1', i) |  |     makeTest('sha224', i) |  |     makeTest('sha256', i) |  |     makeTest('sha384', i) |  |     makeTest('sha512', i) |  |   }) |  | } | 
 |