Projekt

Obecné

Profil

Stáhnout (2.45 KB) Statistiky
| Větev: | Revize:
1
var crypto = require('crypto')
2
var tape = require('tape')
3
var Sha1 = require('../').sha1
4

    
5
var inputs = [
6
  ['', 'ascii'],
7
  ['abc', 'ascii'],
8
  ['123', 'ascii'],
9
  ['123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 'ascii'],
10
  ['123456789abcdef123456789abcdef123456789abcdef123456789abc', 'ascii'],
11
  ['123456789abcdef123456789abcdef123456789abcdef123456789ab', 'ascii'],
12
  ['0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde', 'ascii'],
13
  ['0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef', 'ascii'],
14
  ['foobarbaz', 'ascii']
15
]
16

    
17
tape("hash is the same as node's crypto", function (t) {
18
  inputs.forEach(function (v) {
19
    var a = new Sha1().update(v[0], v[1]).digest('hex')
20
    var e = crypto.createHash('sha1').update(v[0], v[1]).digest('hex')
21
    console.log(a, '==', e)
22
    t.equal(a, e)
23
  })
24

    
25
  t.end()
26
})
27

    
28
tape('call update multiple times', function (t) {
29
  inputs.forEach(function (v) {
30
    var hash = new Sha1()
31
    var _hash = crypto.createHash('sha1')
32

    
33
    for (var i = 0; i < v[0].length; i = (i + 1) * 2) {
34
      var s = v[0].substring(i, (i + 1) * 2)
35
      hash.update(s, v[1])
36
      _hash.update(s, v[1])
37
    }
38

    
39
    var a = hash.digest('hex')
40
    var e = _hash.digest('hex')
41
    console.log(a, '==', e)
42
    t.equal(a, e)
43
  })
44
  t.end()
45
})
46

    
47
tape('call update twice', function (t) {
48
  var _hash = crypto.createHash('sha1')
49
  var hash = new Sha1()
50

    
51
  _hash.update('foo', 'ascii')
52
  hash.update('foo', 'ascii')
53

    
54
  _hash.update('bar', 'ascii')
55
  hash.update('bar', 'ascii')
56

    
57
  _hash.update('baz', 'ascii')
58
  hash.update('baz', 'ascii')
59

    
60
  var a = hash.digest('hex')
61
  var e = _hash.digest('hex')
62

    
63
  t.equal(a, e)
64
  t.end()
65
})
66

    
67
tape('hex encoding', function (t) {
68
  inputs.forEach(function (v) {
69
    var hash = new Sha1()
70
    var _hash = crypto.createHash('sha1')
71

    
72
    for (var i = 0; i < v[0].length; i = (i + 1) * 2) {
73
      var s = v[0].substring(i, (i + 1) * 2)
74
      hash.update(Buffer.from(s, 'ascii').toString('hex'), 'hex')
75
      _hash.update(Buffer.from(s, 'ascii').toString('hex'), 'hex')
76
    }
77
    var a = hash.digest('hex')
78
    var e = _hash.digest('hex')
79

    
80
    console.log(a, '==', e)
81
    t.equal(a, e)
82
  })
83

    
84
  t.end()
85
})
86

    
87
tape('call digest for more than MAX_UINT32 bits of data', function (t) {
88
  var _hash = crypto.createHash('sha1')
89
  var hash = new Sha1()
90
  var bigData = Buffer.alloc(0x1ffffffff / 8)
91

    
92
  hash.update(bigData)
93
  _hash.update(bigData)
94

    
95
  var a = hash.digest('hex')
96
  var e = _hash.digest('hex')
97

    
98
  t.equal(a, e)
99
  t.end()
100
})
(2-2/3)