mirror of
				https://github.com/cp6/my-idlers.git
				synced 2025-11-03 23:59:09 +00:00 
			
		
		
		
	
		
			
	
	
		
			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)
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								}
							 |