diff --git a/package.json b/package.json index 4905e9b..964f9cb 100644 --- a/package.json +++ b/package.json @@ -35,14 +35,13 @@ "browserify-aes": "^1.0.6", "keypair": "^1.0.1", "libp2p-crypto-secp256k1": "~0.2.1", - "nodeify": "^1.0.1", + "multihashing-async": "~0.4.6", "pem-jwk": "^1.5.1", "protocol-buffers": "^3.2.1", "rsa-pem-to-jwk": "^1.1.3", "safe-buffer": "^5.1.1", "tweetnacl": "^1.0.0", - "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#master", - "multihashing-async": "~0.4.6" + "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#master" }, "devDependencies": { "aegir": "^11.0.2", @@ -79,4 +78,4 @@ "greenkeeper[bot] ", "nikuda " ] -} \ No newline at end of file +} diff --git a/src/hmac/index-browser.js b/src/hmac/index-browser.js index 2ac5cd6..90634c0 100644 --- a/src/hmac/index-browser.js +++ b/src/hmac/index-browser.js @@ -1,6 +1,6 @@ 'use strict' -const nodeify = require('nodeify') +const nodeify = require('../nodeify') const Buffer = require('safe-buffer').Buffer const crypto = require('../webcrypto.js')() @@ -12,6 +12,11 @@ const hashTypes = { SHA512: 'SHA-512' } +const sign = (key, data, cb) => { + nodeify(crypto.subtle.sign({name: 'HMAC'}, key, data) + .then((raw) => Buffer.from(raw)), cb) +} + exports.create = function (hashType, secret, callback) { const hash = hashTypes[hashType] @@ -27,8 +32,7 @@ exports.create = function (hashType, secret, callback) { ).then((key) => { return { digest (data, cb) { - nodeify(crypto.subtle.sign({name: 'HMAC'}, key, data) - .then((raw) => Buffer.from(raw)), cb) + sign(key, data, cb) }, length: lengths[hashType] } diff --git a/src/keys/ecdh-browser.js b/src/keys/ecdh-browser.js index c63f4da..959288d 100644 --- a/src/keys/ecdh-browser.js +++ b/src/keys/ecdh-browser.js @@ -1,7 +1,7 @@ 'use strict' const webcrypto = require('../webcrypto.js')() -const nodeify = require('nodeify') +const nodeify = require('../nodeify') const BN = require('asn1.js').bignum const Buffer = require('safe-buffer').Buffer diff --git a/src/keys/rsa-browser.js b/src/keys/rsa-browser.js index 8df964a..f5a1aba 100644 --- a/src/keys/rsa-browser.js +++ b/src/keys/rsa-browser.js @@ -1,6 +1,6 @@ 'use strict' -const nodeify = require('nodeify') +const nodeify = require('../nodeify') const Buffer = require('safe-buffer').Buffer const webcrypto = require('../webcrypto.js')() diff --git a/src/nodeify.js b/src/nodeify.js new file mode 100644 index 0000000..4a741b3 --- /dev/null +++ b/src/nodeify.js @@ -0,0 +1,11 @@ +'use strict' + +// Based on npmjs.com/nodeify but without additional `nextTick` calls +// to keep the overhead low +module.exports = function nodeify (promise, cb) { + return promise.then((res) => { + cb(null, res) + }, (err) => { + cb(err) + }) +}