diff --git a/package.json b/package.json index ccda3d3..7e3a6c4 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,6 @@ "hdkey": "^1.1.1", "randombytes": "^2.0.6", "safe-buffer": "^5.1.2", - "scrypt.js": "^0.3.0", "utf8": "^3.0.0", "uuid": "^3.3.2" }, @@ -54,7 +53,7 @@ "husky": "^2.1.0", "istanbul": "^0.4.5", "mocha": "^5.2.0", - "standard": "^12.0.0" + "standard": "^12.0.1" }, "standard": { "globals": [ diff --git a/src/index.js b/src/index.js index dfc3442..e5e7f66 100644 --- a/src/index.js +++ b/src/index.js @@ -2,7 +2,6 @@ var Buffer = require('safe-buffer').Buffer var ethUtil = require('ethereumjs-util') var crypto = require('crypto') var randomBytes = require('randombytes') -var scryptsy = require('scrypt.js') var uuidv4 = require('uuid/v4') var bs58check = require('bs58check') @@ -130,7 +129,7 @@ Wallet.prototype.toV3 = function (password, opts) { kdfparams.n = opts.n || 262144 kdfparams.r = opts.r || 8 kdfparams.p = opts.p || 1 - derivedKey = scryptsy(Buffer.from(password), salt, kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen) + derivedKey = crypto.scryptSync(Buffer.from(password), salt, kdfparams.dklen, { 'cost': kdfparams.n, 'blockSize': kdfparams.r, 'parallelization': kdfparams.p }) } else { throw new Error('Unsupported kdf') } @@ -226,7 +225,7 @@ Wallet.fromV1 = function (input, password) { } var kdfparams = json.Crypto.KeyHeader.KdfParams - var derivedKey = scryptsy(Buffer.from(password), Buffer.from(json.Crypto.Salt, 'hex'), kdfparams.N, kdfparams.R, kdfparams.P, kdfparams.DkLen) + var derivedKey = crypto.scryptSync(Buffer.from(password), Buffer.from(json.Crypto.Salt, 'hex'), kdfparams.dklen, { 'cost': kdfparams.n, 'blockSize': kdfparams.r, 'parallelization': kdfparams.p }) var ciphertext = Buffer.from(json.Crypto.CipherText, 'hex') @@ -256,7 +255,7 @@ Wallet.fromV3 = function (input, password, nonStrict) { kdfparams = json.crypto.kdfparams // FIXME: support progress reporting callback - derivedKey = scryptsy(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen) + derivedKey = crypto.scryptSync(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.dklen, { 'cost': kdfparams.n, 'blockSize': kdfparams.r, 'parallelization': kdfparams.p }) } else if (json.crypto.kdf === 'pbkdf2') { kdfparams = json.crypto.kdfparams diff --git a/src/thirdparty.js b/src/thirdparty.js index 41a9d85..86c190d 100644 --- a/src/thirdparty.js +++ b/src/thirdparty.js @@ -1,7 +1,6 @@ var Wallet = require('./index.js') var ethUtil = require('ethereumjs-util') var crypto = require('crypto') -var scryptsy = require('scrypt.js') var utf8 = require('utf8') var aesjs = require('aes-js') var Buffer = require('safe-buffer').Buffer @@ -186,7 +185,12 @@ Thirdparty.fromKryptoKit = function (entropy, password) { var checksum = entropy.slice(30, 46) var salt = kryptoKitBrokenScryptSeed(encryptedSeed) - var aesKey = scryptsy(Buffer.from(password, 'utf8'), salt, 16384, 8, 1, 32) + var dklen = 32 + var n = 16384 + var r = 8 + var p = 1 + + var aesKey = crypto.scryptSync(Buffer.from(password, 'utf8'), salt, dklen, { 'cost': n, 'blockSize': r, 'parallelization': p }) /* FIXME: try to use `crypto` instead of `aesjs`