| var test = require('tape') | |
| var algorithms = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'] | |
| var vectors = require('hash-test-vectors/hmac') | |
| testLib('createHmac in crypto-browserify', require('../').createHmac) | |
| testLib('create-hmac/browser', require('create-hmac/browser')) | |
| function testLib (name, createHmac) { | |
| algorithms.forEach(function (alg) { | |
| test(name + ' hmac(' + alg + ')', function (t) { | |
| run(0) | |
| function run (i) { | |
| if (i >= vectors.length) { | |
| return t.end() | |
| } | |
| var input = vectors[i] | |
| var output = createHmac(alg, new Buffer(input.key, 'hex')) | |
| .update(input.data, 'hex').digest() | |
| output = input.truncate ? output.slice(0, input.truncate) : output | |
| output = output.toString('hex') | |
| if (output !== input[alg]) { | |
| t.equal(output, input[alg]) | |
| } | |
| setTimeout(run, 0, i + 1) | |
| } | |
| }) | |
| test('hmac(' + alg + ')', function (t) { | |
| run(0) | |
| function run (i) { | |
| if (i >= vectors.length) { | |
| return t.end() | |
| } | |
| var input = vectors[i] | |
| var hmac = createHmac(alg, new Buffer(input.key, 'hex')) | |
| hmac.end(input.data, 'hex') | |
| var output = hmac.read() | |
| output = input.truncate ? output.slice(0, input.truncate) : output | |
| output = output.toString('hex') | |
| if (output !== input[alg]) { | |
| t.equal(output, input[alg]) | |
| } | |
| setTimeout(run, 0, i + 1) | |
| } | |
| }) | |
| }) | |
| } |