Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80542 views
1
var test = require('tape')
2
3
var algorithms = ['sha1', 'sha224','sha256', 'sha384', 'sha512', 'md5', 'rmd160']
4
var formats = [undefined, 'base64', 'hex', 'binary']
5
6
var vectors = require('hash-test-vectors/hmac')
7
var createHmac = require('./browser')
8
algorithms.forEach(function (alg) {
9
vectors.forEach(function (input) {
10
var key = new Buffer(input.key, 'hex')
11
var inputBuffer = new Buffer(input.data, 'hex')
12
13
formats.forEach(function (format) {
14
test('hmac(' + alg + ') w/ ' + input.data.slice(0, 6) + '... as ' + format, function (t) {
15
var hmac = createHmac(alg, key)
16
17
var formattedInput = format ? inputBuffer.toString(format) : inputBuffer
18
hmac.update(formattedInput, format)
19
20
var formattedOutput = hmac.digest(format)
21
var output = new Buffer(formattedOutput, format)
22
23
var truncated = input.truncate ? output.slice(0, input.truncate) : output
24
t.equal(truncated.toString('hex'), input[alg])
25
t.end()
26
})
27
})
28
})
29
30
vectors.forEach(function (input) {
31
test('hmac(' + alg + ') as stream w/ ' + input.data.slice(0, 6) + '...', function (t) {
32
var hmac = createHmac(alg, new Buffer(input.key, 'hex'))
33
hmac.end(input.data, 'hex')
34
35
var output = hmac.read()
36
var truncated = input.truncate ? output.slice(0, input.truncate) : output
37
t.equal(truncated.toString('hex'), input[alg])
38
t.end()
39
})
40
})
41
})
42
43