51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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)
 | 
						|
      }
 | 
						|
    })
 | 
						|
  })
 | 
						|
}
 |