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)
| })
| }
|
|