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