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.
		
		
		
		
		
			
		
			
				
					
					
						
							50 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							50 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) | 
						|
      } | 
						|
    }) | 
						|
  }) | 
						|
}
 | 
						|
 |