js-libp2p-crypto/src/hmac/index-browser.js

37 lines
725 B
JavaScript
Raw Normal View History

'use strict'
const nodeify = require('nodeify')
const Buffer = require('safe-buffer').Buffer
2017-07-22 10:57:27 -07:00
const crypto = require('../webcrypto.js')()
const lengths = require('./lengths')
const hashTypes = {
SHA1: 'SHA-1',
SHA256: 'SHA-256',
SHA512: 'SHA-512'
}
exports.create = function (hashType, secret, callback) {
const hash = hashTypes[hashType]
nodeify(crypto.subtle.importKey(
'raw',
secret,
{
name: 'HMAC',
hash: {name: hash}
},
false,
['sign']
).then((key) => {
return {
digest (data, cb) {
2017-07-22 10:57:27 -07:00
nodeify(crypto.subtle.sign({name: 'HMAC'}, key, data)
.then((raw) => Buffer.from(raw)), cb)
},
length: lengths[hashType]
}
}), callback)
}