test.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. var test = require('tape')
  2. var algorithms = ['sha1', 'sha224','sha256', 'sha384', 'sha512', 'SHA512', 'md5', 'rmd160']
  3. var formats = [undefined, 'base64', 'hex', 'binary']
  4. var vectors = require('hash-test-vectors/hmac')
  5. var createHmac = require('./browser')
  6. algorithms.forEach(function (alg) {
  7. vectors.forEach(function (input) {
  8. var key = new Buffer(input.key, 'hex')
  9. var inputBuffer = new Buffer(input.data, 'hex')
  10. formats.forEach(function (format) {
  11. test('hmac(' + alg + ') w/ ' + input.data.slice(0, 6) + '... as ' + format, function (t) {
  12. var hmac = createHmac(alg, key)
  13. var formattedInput = format ? inputBuffer.toString(format) : inputBuffer
  14. hmac.update(formattedInput, format)
  15. var formattedOutput = hmac.digest(format)
  16. var output = new Buffer(formattedOutput, format)
  17. var truncated = input.truncate ? output.slice(0, input.truncate) : output
  18. t.equal(truncated.toString('hex'), input[alg.toLowerCase()])
  19. t.end()
  20. })
  21. })
  22. })
  23. vectors.forEach(function (input) {
  24. test('hmac(' + alg + ') as stream w/ ' + input.data.slice(0, 6) + '...', function (t) {
  25. var hmac = createHmac(alg, new Buffer(input.key, 'hex'))
  26. hmac.end(input.data, 'hex')
  27. var output = hmac.read()
  28. var truncated = input.truncate ? output.slice(0, input.truncate) : output
  29. t.equal(truncated.toString('hex'), input[alg.toLowerCase()])
  30. t.end()
  31. })
  32. })
  33. })