bufferify hash algo (for crypto-js) - closes

This commit is contained in:
Miguel Mota 2018-08-02 17:46:06 -07:00
parent 1b74431d15
commit 922f78fa27
4 changed files with 265 additions and 225 deletions

View File

@ -1,4 +1,5 @@
const reverse = require('buffer-reverse')
const CryptoJS = require('crypto-js')
/**
* Class reprensenting a Merkle Tree
@ -29,7 +30,7 @@ class MerkleTree {
* const tree = new MerkleTree(leaves, sha256)
*/
constructor(leaves, hashAlgorithm, options={}) {
this.hashAlgo = hashAlgorithm
this.hashAlgo = bufferify(hashAlgorithm)
this.leaves = leaves
this.layers = [leaves]
this.isBitcoinTree = !!options.isBitcoinTree
@ -251,4 +252,16 @@ class MerkleTree {
}
}
function bufferify (f) {
return function (x) {
const v = f(x)
if (Buffer.isBuffer(v)) {
return v
}
// crypto-js support
return Buffer.from(f(CryptoJS.enc.Hex.parse(x.toString('hex'))).toString(CryptoJS.enc.Hex), 'hex')
}
}
module.exports = MerkleTree

457
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "merkletreejs",
"version": "0.0.6",
"version": "0.0.7",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -16,7 +16,7 @@
"integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
"dev": true,
"requires": {
"acorn": "^3.0.4"
"acorn": "3.3.0"
}
},
"align-text": {
@ -25,9 +25,9 @@
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
"dev": true,
"requires": {
"kind-of": "^3.0.2",
"longest": "^1.0.1",
"repeat-string": "^1.5.2"
"kind-of": "3.2.2",
"longest": "1.0.1",
"repeat-string": "1.6.1"
}
},
"amdefine": {
@ -42,7 +42,7 @@
"integrity": "sha1-HBg5S2r5t2/5pjUJ+kl2af0s5T4=",
"dev": true,
"requires": {
"array-back": "^1.0.3"
"array-back": "1.0.4"
},
"dependencies": {
"array-back": {
@ -51,7 +51,7 @@
"integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
"typical": "2.6.1"
}
}
}
@ -62,7 +62,7 @@
"integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
"dev": true,
"requires": {
"typical": "^2.6.1"
"typical": "2.6.1"
}
},
"async": {
@ -89,7 +89,7 @@
"integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=",
"dev": true,
"requires": {
"safe-buffer": "^5.0.1"
"safe-buffer": "5.1.2"
}
},
"bluebird": {
@ -110,7 +110,7 @@
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
@ -126,12 +126,12 @@
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"dev": true,
"requires": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
"create-hash": "^1.1.0",
"evp_bytestokey": "^1.0.3",
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
"buffer-xor": "1.0.3",
"cipher-base": "1.0.4",
"create-hash": "1.2.0",
"evp_bytestokey": "1.0.3",
"inherits": "2.0.3",
"safe-buffer": "5.1.2"
}
},
"buffer-reverse": {
@ -151,9 +151,9 @@
"integrity": "sha512-4TgWfe9SF+bUy5cCql8gWHqKNrviufNwSYxLjf2utB0pY4+bdcuFwMmY1hDB+67Gz/L1vmhFNhePAjJTFBtV+Q==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"fs-then-native": "^2.0.0",
"mkdirp2": "^1.0.3"
"array-back": "2.0.0",
"fs-then-native": "2.0.0",
"mkdirp2": "1.0.4"
}
},
"camelcase": {
@ -169,7 +169,7 @@
"integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=",
"dev": true,
"requires": {
"underscore-contrib": "~0.3.0"
"underscore-contrib": "0.3.0"
}
},
"center-align": {
@ -179,8 +179,8 @@
"dev": true,
"optional": true,
"requires": {
"align-text": "^0.1.3",
"lazy-cache": "^1.0.3"
"align-text": "0.1.4",
"lazy-cache": "1.0.4"
}
},
"cipher-base": {
@ -189,8 +189,8 @@
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
"dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
"inherits": "2.0.3",
"safe-buffer": "5.1.2"
}
},
"cliui": {
@ -200,8 +200,8 @@
"dev": true,
"optional": true,
"requires": {
"center-align": "^0.1.1",
"right-align": "^0.1.1",
"center-align": "0.1.3",
"right-align": "0.1.3",
"wordwrap": "0.0.2"
},
"dependencies": {
@ -220,8 +220,8 @@
"integrity": "sha512-0y0rBgoX8IzIjBAUnO73SEtSb4Mhk3IoceWJq5zZSxb9mWORhWH8xLYo4EDSOE1jRBk1LhmfjqWFFt10h/+MEA==",
"dev": true,
"requires": {
"stream-connect": "^1.0.2",
"stream-via": "^1.0.4"
"stream-connect": "1.0.2",
"stream-via": "1.0.4"
}
},
"command-line-args": {
@ -230,9 +230,9 @@
"integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"find-replace": "^1.0.3",
"typical": "^2.6.1"
"array-back": "2.0.0",
"find-replace": "1.0.3",
"typical": "2.6.1"
}
},
"command-line-tool": {
@ -241,11 +241,11 @@
"integrity": "sha1-yoB5KuIGnPfKpWLAy8LNEYERIqA=",
"dev": true,
"requires": {
"ansi-escape-sequences": "^3.0.0",
"array-back": "^1.0.4",
"command-line-args": "^4.0.1",
"command-line-usage": "^4.0.0",
"typical": "^2.6.0"
"ansi-escape-sequences": "3.0.0",
"array-back": "1.0.4",
"command-line-args": "4.0.7",
"command-line-usage": "4.1.0",
"typical": "2.6.1"
},
"dependencies": {
"array-back": {
@ -254,7 +254,7 @@
"integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
"typical": "2.6.1"
}
}
}
@ -265,10 +265,10 @@
"integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==",
"dev": true,
"requires": {
"ansi-escape-sequences": "^4.0.0",
"array-back": "^2.0.0",
"table-layout": "^0.4.2",
"typical": "^2.6.1"
"ansi-escape-sequences": "4.0.0",
"array-back": "2.0.0",
"table-layout": "0.4.4",
"typical": "2.6.1"
},
"dependencies": {
"ansi-escape-sequences": {
@ -277,7 +277,7 @@
"integrity": "sha512-v+0wW9Wezwsyb0uF4aBVCjmSqit3Ru7PZFziGF0o2KwTvN2zWfTi3BRLq9EkJFdg3eBbyERXGTntVpBxH1J68Q==",
"dev": true,
"requires": {
"array-back": "^2.0.0"
"array-back": "2.0.0"
}
}
}
@ -300,7 +300,7 @@
"integrity": "sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=",
"dev": true,
"requires": {
"walk-back": "^2.0.1"
"walk-back": "2.0.1"
},
"dependencies": {
"walk-back": {
@ -317,11 +317,11 @@
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"dev": true,
"requires": {
"cipher-base": "^1.0.1",
"inherits": "^2.0.1",
"md5.js": "^1.3.4",
"ripemd160": "^2.0.1",
"sha.js": "^2.4.0"
"cipher-base": "1.0.4",
"inherits": "2.0.3",
"md5.js": "1.3.4",
"ripemd160": "2.0.2",
"sha.js": "2.4.11"
}
},
"create-hmac": {
@ -330,12 +330,12 @@
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"dev": true,
"requires": {
"cipher-base": "^1.0.3",
"create-hash": "^1.1.0",
"inherits": "^2.0.1",
"ripemd160": "^2.0.0",
"safe-buffer": "^5.0.1",
"sha.js": "^2.4.8"
"cipher-base": "1.0.4",
"create-hash": "1.2.0",
"inherits": "2.0.3",
"ripemd160": "2.0.2",
"safe-buffer": "5.1.2",
"sha.js": "2.4.11"
}
},
"crypto": {
@ -344,6 +344,12 @@
"integrity": "sha1-RwqBuGvkxe4XrMggeh9TFa4g27A=",
"dev": true
},
"crypto-js": {
"version": "3.1.9-1",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz",
"integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg=",
"dev": true
},
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@ -375,18 +381,18 @@
"integrity": "sha512-79w644JdsB2TthYpVl2bDurX7i9Abaegg2E7X46Ajc135aASTMXxrHzJ9mOa5X5nbmnXwlBYiF68K+1baX+BzQ==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"cache-point": "^0.4.1",
"common-sequence": "^1.0.2",
"file-set": "^2.0.0",
"handlebars": "^4.0.11",
"marked": "^0.3.16",
"object-get": "^2.1.0",
"reduce-flatten": "^1.0.1",
"reduce-unique": "^1.0.0",
"reduce-without": "^1.0.1",
"test-value": "^3.0.0",
"walk-back": "^3.0.0"
"array-back": "2.0.0",
"cache-point": "0.4.1",
"common-sequence": "1.0.2",
"file-set": "2.0.0",
"handlebars": "4.0.11",
"marked": "0.3.19",
"object-get": "2.1.0",
"reduce-flatten": "1.0.1",
"reduce-unique": "1.0.0",
"reduce-without": "1.0.1",
"test-value": "3.0.0",
"walk-back": "3.0.0"
},
"dependencies": {
"test-value": {
@ -395,8 +401,8 @@
"integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"typical": "^2.6.1"
"array-back": "2.0.0",
"typical": "2.6.1"
}
}
}
@ -407,9 +413,9 @@
"integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=",
"dev": true,
"requires": {
"browserify-aes": "^1.0.6",
"create-hash": "^1.1.2",
"create-hmac": "^1.1.4"
"browserify-aes": "1.2.0",
"create-hash": "1.2.0",
"create-hmac": "1.1.7"
}
},
"elliptic": {
@ -418,13 +424,13 @@
"integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
"dev": true,
"requires": {
"bn.js": "^4.4.0",
"brorand": "^1.0.1",
"hash.js": "^1.0.0",
"hmac-drbg": "^1.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.0"
"bn.js": "4.11.8",
"brorand": "1.1.0",
"hash.js": "1.1.4",
"hmac-drbg": "1.0.1",
"inherits": "2.0.3",
"minimalistic-assert": "1.0.1",
"minimalistic-crypto-utils": "1.0.1"
}
},
"escape-string-regexp": {
@ -439,8 +445,8 @@
"integrity": "sha1-/V3ux2qXpRIKnNOnyxF3oJI7EdI=",
"dev": true,
"requires": {
"acorn": "^3.3.0",
"acorn-jsx": "^3.0.0"
"acorn": "3.3.0",
"acorn-jsx": "3.0.1"
}
},
"ethereumjs-util": {
@ -449,13 +455,13 @@
"integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==",
"dev": true,
"requires": {
"bn.js": "^4.11.0",
"create-hash": "^1.1.2",
"ethjs-util": "^0.1.3",
"keccak": "^1.0.2",
"rlp": "^2.0.0",
"safe-buffer": "^5.1.1",
"secp256k1": "^3.0.1"
"bn.js": "4.11.8",
"create-hash": "1.2.0",
"ethjs-util": "0.1.6",
"keccak": "1.4.0",
"rlp": "2.1.0",
"safe-buffer": "5.1.2",
"secp256k1": "3.5.0"
}
},
"ethjs-util": {
@ -474,8 +480,8 @@
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
"dev": true,
"requires": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
"md5.js": "1.3.4",
"safe-buffer": "5.1.2"
}
},
"file-set": {
@ -484,8 +490,8 @@
"integrity": "sha512-cCWXfw+nrYoIoUVmEF7Xsw91lGWuObtSnTEZ7AmdvZou1A/6Xx237HfxdQyC/ayKRvQSMbNOBwg62OjN5JxbXw==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"glob": "^7.1.2"
"array-back": "2.0.0",
"glob": "7.1.2"
}
},
"find-replace": {
@ -494,8 +500,8 @@
"integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=",
"dev": true,
"requires": {
"array-back": "^1.0.4",
"test-value": "^2.1.0"
"array-back": "1.0.4",
"test-value": "2.1.0"
},
"dependencies": {
"array-back": {
@ -504,7 +510,7 @@
"integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
"typical": "2.6.1"
}
}
}
@ -527,12 +533,12 @@
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"graceful-fs": {
@ -548,10 +554,10 @@
"integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
"dev": true,
"requires": {
"async": "^1.4.0",
"optimist": "^0.6.1",
"source-map": "^0.4.4",
"uglify-js": "^2.6"
"async": "1.5.2",
"optimist": "0.6.1",
"source-map": "0.4.4",
"uglify-js": "2.8.29"
}
},
"hash-base": {
@ -560,8 +566,8 @@
"integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
"dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
"inherits": "2.0.3",
"safe-buffer": "5.1.2"
}
},
"hash.js": {
@ -570,8 +576,8 @@
"integrity": "sha512-A6RlQvvZEtFS5fLU43IDu0QUmBy+fDO9VMdTXvufKwIkt/rFfvICAViCax5fbDO4zdNzaC3/27ZhKUok5bAJyw==",
"dev": true,
"requires": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.0"
"inherits": "2.0.3",
"minimalistic-assert": "1.0.1"
}
},
"hmac-drbg": {
@ -580,9 +586,9 @@
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
"dev": true,
"requires": {
"hash.js": "^1.0.3",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.1"
"hash.js": "1.1.4",
"minimalistic-assert": "1.0.1",
"minimalistic-crypto-utils": "1.0.1"
}
},
"inflight": {
@ -591,8 +597,8 @@
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
@ -602,10 +608,9 @@
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
},
"is-hex-prefixed": {
"version": "1.0.0",
@ -625,18 +630,18 @@
"integrity": "sha1-qAcRlSi0AJzLyrSbdSL2P+xs0L0=",
"dev": true,
"requires": {
"bluebird": "~3.4.6",
"catharsis": "~0.8.8",
"escape-string-regexp": "~1.0.5",
"espree": "~3.1.7",
"js2xmlparser": "~1.0.0",
"klaw": "~1.3.0",
"marked": "~0.3.6",
"mkdirp": "~0.5.1",
"requizzle": "~0.2.1",
"strip-json-comments": "~2.0.1",
"bluebird": "3.4.7",
"catharsis": "0.8.9",
"escape-string-regexp": "1.0.5",
"espree": "3.1.7",
"js2xmlparser": "1.0.0",
"klaw": "1.3.1",
"marked": "0.3.19",
"mkdirp": "0.5.1",
"requizzle": "0.2.1",
"strip-json-comments": "2.0.1",
"taffydb": "2.6.2",
"underscore": "~1.8.3"
"underscore": "1.8.3"
}
},
"jsdoc-api": {
@ -645,15 +650,15 @@
"integrity": "sha1-DVJwAjX4Zb1Ki61evB77Vi/IrSo=",
"dev": true,
"requires": {
"array-back": "^1.0.4",
"cache-point": "~0.4.0",
"collect-all": "^1.0.2",
"file-set": "^1.1.1",
"fs-then-native": "^2.0.0",
"jsdoc-75lb": "^3.6.0",
"object-to-spawn-args": "^1.1.0",
"temp-path": "^1.0.0",
"walk-back": "^2.0.1"
"array-back": "1.0.4",
"cache-point": "0.4.1",
"collect-all": "1.0.3",
"file-set": "1.1.1",
"fs-then-native": "2.0.0",
"jsdoc-75lb": "3.6.0",
"object-to-spawn-args": "1.1.1",
"temp-path": "1.0.0",
"walk-back": "2.0.1"
},
"dependencies": {
"array-back": {
@ -662,7 +667,7 @@
"integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
"typical": "2.6.1"
}
},
"file-set": {
@ -671,8 +676,8 @@
"integrity": "sha1-0+xwwIDsjxjyBLod4QZ4DJBWkms=",
"dev": true,
"requires": {
"array-back": "^1.0.3",
"glob": "^7.1.0"
"array-back": "1.0.4",
"glob": "7.1.2"
}
},
"walk-back": {
@ -689,12 +694,12 @@
"integrity": "sha512-btZLp4wYl90vcAfgk4hoGQbO17iBVrhh3LJRMKZNtZgniO3F8H2CjxXld0owBIB1XxN+j3bAcWZnZKMnSj3iMA==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"lodash.omit": "^4.5.0",
"lodash.pick": "^4.4.0",
"reduce-extract": "^1.0.0",
"sort-array": "^2.0.0",
"test-value": "^3.0.0"
"array-back": "2.0.0",
"lodash.omit": "4.5.0",
"lodash.pick": "4.4.0",
"reduce-extract": "1.0.0",
"sort-array": "2.0.0",
"test-value": "3.0.0"
},
"dependencies": {
"test-value": {
@ -703,8 +708,8 @@
"integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"typical": "^2.6.1"
"array-back": "2.0.0",
"typical": "2.6.1"
}
}
}
@ -715,13 +720,13 @@
"integrity": "sha512-NDD+dpLiF9SYJXFcYPutKi/K8pRtIHHmVyQJzUArYQCoVhNISKeIVK5Pe78mi7K5s16/Nk7EviN2xxlJJ+S5Bw==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"command-line-tool": "^0.7.0",
"config-master": "^3.1.0",
"dmd": "^3.0.9",
"jsdoc-api": "^3.0.0",
"jsdoc-parse": "^3.0.1",
"walk-back": "^3.0.0"
"array-back": "2.0.0",
"command-line-tool": "0.7.0",
"config-master": "3.1.0",
"dmd": "3.0.12",
"jsdoc-api": "3.0.0",
"jsdoc-parse": "3.0.1",
"walk-back": "3.0.0"
}
},
"keccak": {
@ -730,10 +735,10 @@
"integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==",
"dev": true,
"requires": {
"bindings": "^1.2.1",
"inherits": "^2.0.3",
"nan": "^2.2.1",
"safe-buffer": "^5.1.0"
"bindings": "1.3.0",
"inherits": "2.0.3",
"nan": "2.10.0",
"safe-buffer": "5.1.2"
}
},
"kind-of": {
@ -742,7 +747,15 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
"is-buffer": "1.1.6"
},
"dependencies": {
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
}
}
},
"klaw": {
@ -751,7 +764,7 @@
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.9"
"graceful-fs": "4.1.11"
}
},
"lazy-cache": {
@ -803,8 +816,8 @@
"integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
"dev": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
"hash-base": "3.0.4",
"inherits": "2.0.3"
}
},
"minimalistic-assert": {
@ -825,7 +838,7 @@
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
"brace-expansion": "1.1.11"
}
},
"minimist": {
@ -887,7 +900,7 @@
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
"wrappy": "1.0.2"
}
},
"optimist": {
@ -896,8 +909,8 @@
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"dev": true,
"requires": {
"minimist": "~0.0.1",
"wordwrap": "~0.0.2"
"minimist": "0.0.10",
"wordwrap": "0.0.3"
}
},
"path-is-absolute": {
@ -912,7 +925,7 @@
"integrity": "sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=",
"dev": true,
"requires": {
"test-value": "^1.0.1"
"test-value": "1.1.0"
},
"dependencies": {
"array-back": {
@ -921,7 +934,7 @@
"integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
"typical": "2.6.1"
}
},
"test-value": {
@ -930,8 +943,8 @@
"integrity": "sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=",
"dev": true,
"requires": {
"array-back": "^1.0.2",
"typical": "^2.4.2"
"array-back": "1.0.4",
"typical": "2.6.1"
}
}
}
@ -954,7 +967,7 @@
"integrity": "sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=",
"dev": true,
"requires": {
"test-value": "^2.0.0"
"test-value": "2.1.0"
}
},
"repeat-string": {
@ -969,7 +982,7 @@
"integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=",
"dev": true,
"requires": {
"underscore": "~1.6.0"
"underscore": "1.6.0"
},
"dependencies": {
"underscore": {
@ -986,7 +999,7 @@
"integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
"dev": true,
"requires": {
"through": "~2.3.4"
"through": "2.3.8"
}
},
"right-align": {
@ -996,7 +1009,7 @@
"dev": true,
"optional": true,
"requires": {
"align-text": "^0.1.1"
"align-text": "0.1.4"
}
},
"ripemd160": {
@ -1005,8 +1018,8 @@
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
"dev": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
"hash-base": "3.0.4",
"inherits": "2.0.3"
}
},
"rlp": {
@ -1015,7 +1028,7 @@
"integrity": "sha512-93U7IKH5j7nmXFVg19MeNBGzQW5uXW1pmCuKY8veeKIhYTE32C2d0mOegfiIAfXcHOKJjjPlJisn8iHDF5AezA==",
"dev": true,
"requires": {
"safe-buffer": "^5.1.1"
"safe-buffer": "5.1.2"
}
},
"safe-buffer": {
@ -1030,14 +1043,14 @@
"integrity": "sha512-e5QIJl8W7Y4tT6LHffVcZAxJjvpgE5Owawv6/XCYPQljE9aP2NFFddQ8OYMKhdLshNu88FfL3qCN3/xYkXGRsA==",
"dev": true,
"requires": {
"bindings": "^1.2.1",
"bip66": "^1.1.3",
"bn.js": "^4.11.3",
"create-hash": "^1.1.2",
"drbg.js": "^1.0.1",
"elliptic": "^6.2.3",
"nan": "^2.2.1",
"safe-buffer": "^5.1.0"
"bindings": "1.3.0",
"bip66": "1.1.5",
"bn.js": "4.11.8",
"create-hash": "1.2.0",
"drbg.js": "1.0.1",
"elliptic": "6.4.0",
"nan": "2.10.0",
"safe-buffer": "5.1.2"
}
},
"sha.js": {
@ -1046,8 +1059,8 @@
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
"dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
"inherits": "2.0.3",
"safe-buffer": "5.1.2"
}
},
"sigmund": {
@ -1062,9 +1075,9 @@
"integrity": "sha1-OKnG2if9fRR7QuYFVPKBGHtN9HI=",
"dev": true,
"requires": {
"array-back": "^1.0.4",
"object-get": "^2.1.0",
"typical": "^2.6.0"
"array-back": "1.0.4",
"object-get": "2.1.0",
"typical": "2.6.1"
},
"dependencies": {
"array-back": {
@ -1073,7 +1086,7 @@
"integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
"typical": "2.6.1"
}
}
}
@ -1084,7 +1097,7 @@
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
"amdefine": ">=0.0.4"
"amdefine": "1.0.1"
}
},
"stream-connect": {
@ -1093,7 +1106,7 @@
"integrity": "sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=",
"dev": true,
"requires": {
"array-back": "^1.0.2"
"array-back": "1.0.4"
},
"dependencies": {
"array-back": {
@ -1102,7 +1115,7 @@
"integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
"typical": "2.6.1"
}
}
}
@ -1134,11 +1147,11 @@
"integrity": "sha512-uNaR3SRMJwfdp9OUr36eyEi6LLsbcTqTO/hfTsNviKsNeyMBPICJCC7QXRF3+07bAP6FRwA8rczJPBqXDc0CkQ==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
"deep-extend": "~0.6.0",
"lodash.padend": "^4.6.1",
"typical": "^2.6.1",
"wordwrapjs": "^3.0.0"
"array-back": "2.0.0",
"deep-extend": "0.6.0",
"lodash.padend": "4.6.1",
"typical": "2.6.1",
"wordwrapjs": "3.0.0"
}
},
"taffydb": {
@ -1153,13 +1166,13 @@
"integrity": "sha1-SJPdU+KApfWMDOswwsDrs7zVHh8=",
"dev": true,
"requires": {
"deep-equal": "~0.2.0",
"defined": "~0.0.0",
"glob": "~3.2.9",
"inherits": "~2.0.1",
"object-inspect": "~0.4.0",
"resumer": "~0.0.0",
"through": "~2.3.4"
"deep-equal": "0.2.2",
"defined": "0.0.0",
"glob": "3.2.11",
"inherits": "2.0.3",
"object-inspect": "0.4.0",
"resumer": "0.0.0",
"through": "2.3.8"
},
"dependencies": {
"glob": {
@ -1168,8 +1181,8 @@
"integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
"dev": true,
"requires": {
"inherits": "2",
"minimatch": "0.3"
"inherits": "2.0.3",
"minimatch": "0.3.0"
}
},
"minimatch": {
@ -1178,8 +1191,8 @@
"integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
"dev": true,
"requires": {
"lru-cache": "2",
"sigmund": "~1.0.0"
"lru-cache": "2.7.3",
"sigmund": "1.0.1"
}
}
}
@ -1196,8 +1209,8 @@
"integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=",
"dev": true,
"requires": {
"array-back": "^1.0.3",
"typical": "^2.6.0"
"array-back": "1.0.4",
"typical": "2.6.1"
},
"dependencies": {
"array-back": {
@ -1206,7 +1219,7 @@
"integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
"typical": "2.6.1"
}
}
}
@ -1230,9 +1243,9 @@
"dev": true,
"optional": true,
"requires": {
"source-map": "~0.5.1",
"uglify-to-browserify": "~1.0.0",
"yargs": "~3.10.0"
"source-map": "0.5.7",
"uglify-to-browserify": "1.0.2",
"yargs": "3.10.0"
},
"dependencies": {
"source-map": {
@ -1299,8 +1312,8 @@
"integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==",
"dev": true,
"requires": {
"reduce-flatten": "^1.0.1",
"typical": "^2.6.1"
"reduce-flatten": "1.0.1",
"typical": "2.6.1"
}
},
"wrappy": {
@ -1316,9 +1329,9 @@
"dev": true,
"optional": true,
"requires": {
"camelcase": "^1.0.2",
"cliui": "^2.1.0",
"decamelize": "^1.0.0",
"camelcase": "1.2.1",
"cliui": "2.1.0",
"decamelize": "1.2.0",
"window-size": "0.1.0"
}
}

View File

@ -1,6 +1,6 @@
{
"name": "merkletreejs",
"version": "0.0.7",
"version": "0.0.8",
"description": "Construct Merkle Trees and verify proofs",
"main": "index.js",
"scripts": {
@ -36,6 +36,7 @@
"homepage": "https://github.com/miguelmota/merkletreejs",
"devDependencies": {
"crypto": "0.0.3",
"crypto-js": "^3.1.9-1",
"ethereumjs-util": "^5.1.2",
"jsdoc-to-markdown": "^3.0.0",
"tape": "^3.6.1"
@ -44,6 +45,7 @@
"node": ">= 7.6.0"
},
"dependencies": {
"buffer-reverse": "^1.0.1"
"buffer-reverse": "^1.0.1",
"is-buffer": "^2.0.3"
}
}

View File

@ -1,6 +1,7 @@
const test = require('tape')
const {sha3} = require('ethereumjs-util')
const crypto = require('crypto')
const SHA256 = require('crypto-js/sha256')
const MerkleTree = require('../')
@ -19,6 +20,17 @@ test('sha256', t => {
t.equal(tree.getRoot().toString('hex'), root)
})
test('crypto-js - sha256', t => {
t.plan(1)
const leaves = ['a', 'b', 'c'].map(x => sha3(x))
const tree = new MerkleTree(leaves, SHA256)
const root = '311d2e46f49b15fff8b746b74ad57f2cc9e0d9939fda94387141a2d3fdf187ae'
t.equal(tree.getRoot().toString('hex'), root)
})
test('solidity sha3 [keccak-256]', t => {
t.plan(20)