You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.5 KiB

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