Cleaning up utils.

This commit is contained in:
ricmoo 2017-02-27 00:05:39 -05:00
parent a107a7c3e2
commit 735e492f8c
3 changed files with 17 additions and 44 deletions

View File

@ -1,53 +1,22 @@
'use strict'; 'use strict';
// See: https://github.com/dominictarr/hmac var hash = require('hash.js');
//
// The only difference between this and the original is this uses Uint8Array instead of Buffer
// @TODO: Use the hmac in hash.js instead
var convert = require('./convert.js'); var convert = require('./convert.js');
var zeroBuffer = new Uint8Array(128) // @TODO: Make this use create-hmac in node
function Hmac (createHash, blocksize, key) { function createSha256Hmac(key) {
if(!(this instanceof Hmac)) { throw new Error('missing new'); } if (!key.buffer) { key = convert.arrayify(key); }
return new hash.hmac(hash.sha256, key);
this._opad = opad
this._createHash = createHash
if(blocksize !== 128 && blocksize !== 64) {
throw new Error('blocksize must be either 64 for or 128 , but was:' + blocksize);
}
key = this._key = convert.arrayify(key);
if(key.length > blocksize) {
key = this._createHash().update(key).digest()
} else if(key.length < blocksize) {
key = convert.concat([key, zeroBuffer], blocksize)
}
var ipad = this._ipad = new Uint8Array(blocksize)
var opad = this._opad = new Uint8Array(blocksize)
for(var i = 0; i < blocksize; i++) {
ipad[i] = key[i] ^ 0x36
opad[i] = key[i] ^ 0x5C
}
this._hash = this._createHash().update(ipad)
} }
Hmac.prototype.update = function (data, enc) { function createSha512Hmac(key) {
this._hash.update(data, enc) if (!key.buffer) { key = convert.arrayify(key); }
return this; return new hash.hmac(hash.sha512, key);
} }
Hmac.prototype.digest = function (enc) { module.exports = {
var h = this._hash.digest() createSha256Hmac: createSha256Hmac,
return this._createHash().update(this._opad).update(h).digest(enc) createSha512Hmac: createSha512Hmac,
} };
module.exports = Hmac

View File

@ -7,9 +7,11 @@ var address = require('./address.js');
var bigNumber = require('./bignumber.js'); var bigNumber = require('./bignumber.js');
var contractAddress = require('./contract-address.js'); var contractAddress = require('./contract-address.js');
var convert = require('./convert.js'); var convert = require('./convert.js');
var hmac = require('./hmac.js');
var keccak256 = require('./keccak256.js'); var keccak256 = require('./keccak256.js');
var sha256 = require('./sha2.js').sha256; var sha256 = require('./sha2.js').sha256;
var randomBytes = require('./random-bytes.js'); var randomBytes = require('./random-bytes.js');
var pbkdf2 = require('./pbkdf2.js');
var properties = require('./properties.js'); var properties = require('./properties.js');
var rlp = require('./rlp.js'); var rlp = require('./rlp.js');
var utf8 = require('./utf8.js'); var utf8 = require('./utf8.js');
@ -61,5 +63,8 @@ module.exports = {
keccak256: keccak256, keccak256: keccak256,
sha256: sha256, sha256: sha256,
hmac: hmac,
pbkdf2: pbkdf2,
randomBytes: randomBytes, randomBytes: randomBytes,
} }

View File

@ -10,7 +10,6 @@
"bn.js": "^4.4.0", "bn.js": "^4.4.0",
"hash.js": "^1.0.0", "hash.js": "^1.0.0",
"js-sha3": "0.5.7", "js-sha3": "0.5.7",
"rlp": "2.0.0",
"xmlhttprequest": "1.8.0" "xmlhttprequest": "1.8.0"
}, },
"browser": { "browser": {