Blame view

node_modules/sha.js/test/vectors.js 1.6 KB
aaac7fed   liuqimichale   add
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)
    })
  }