[d24f17c] | 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 | })
|
---|