UNPKG

imba

Version:

Intuitive and powerful language for building webapps that fly

54 lines (53 loc) 1.7 kB
import tape from "tape"; import vectors from "hash-test-vectors"; import createHash from "../"; 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); }); }