From 4934c5e7d5eda34cd1e5e511bb5be23574107c78 Mon Sep 17 00:00:00 2001 From: cebgcontract <99630598+cebgcontract@users.noreply.github.com> Date: Fri, 23 Sep 2022 10:47:39 +0800 Subject: [PATCH] =?UTF-8?q?jsb=20scrypt=E8=BF=94=E5=9B=9Ebase64=E7=9A=84?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2,=20js=E7=AB=AF=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=90=8E=E8=BD=AC=E6=88=90uint8array?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patches/web3-eth-accounts+1.7.4.patch | 39 ++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/patches/web3-eth-accounts+1.7.4.patch b/patches/web3-eth-accounts+1.7.4.patch index 1fdb2e7..771e15b 100644 --- a/patches/web3-eth-accounts+1.7.4.patch +++ b/patches/web3-eth-accounts+1.7.4.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/web3-eth-accounts/lib/index.js b/node_modules/web3-eth-accounts/lib/index.js -index a176dd9..1a26ff6 100644 +index a176dd9..4c05e61 100644 --- a/node_modules/web3-eth-accounts/lib/index.js +++ b/node_modules/web3-eth-accounts/lib/index.js @@ -23,7 +23,7 @@ @@ -11,33 +11,60 @@ index a176dd9..1a26ff6 100644 var scrypt = require('scrypt-js'); var uuid = require('uuid'); var utils = require('web3-utils'); -@@ -420,7 +420,11 @@ Accounts.prototype.decrypt = function (v3Keystore, password, nonStrict) { +@@ -38,6 +38,18 @@ var isNot = function (value) { + var isExist = function (value) { + return (typeof value !== 'undefined') && value !== null; + }; ++ ++var base64ToUint8Buffer = function(base64) { ++ var binary_string = window.atob(base64); ++ var len = binary_string.length; ++ var bytes = new Uint8Array(len); ++ for (var i = 0; i < len; i++) { ++ bytes[i] = binary_string.charCodeAt(i); ++ } ++ return bytes; ++} ++ ++ + var Accounts = function Accounts() { + var _this = this; + // sets _requestmanager +@@ -420,7 +432,15 @@ Accounts.prototype.decrypt = function (v3Keystore, password, nonStrict) { if (json.crypto.kdf === 'scrypt') { kdfparams = json.crypto.kdfparams; // FIXME: support progress reporting callback - derivedKey = scrypt.syncScrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); ++ var start = Date.now(); + if (window.jsb && window.jsb.jcCryptoScrypt) { -+ derivedKey = jsb.jcCryptoScrypt(password, kdfparams.salt, kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); ++ let tmpKey = jsb.jcCryptoScrypt(password, kdfparams.salt, kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); ++ derivedKey = base64ToUint8Buffer(tmpKey); + } else { + derivedKey = scrypt.syncScrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); + } ++ console.log('decrypt key: ' + derivedKey); ++ console.log('scrypt generate key cost time: ' + (Date.now() - start)/1000); } else if (json.crypto.kdf === 'pbkdf2') { kdfparams = json.crypto.kdfparams; -@@ -463,7 +467,11 @@ Accounts.prototype.encrypt = function (privateKey, password, options) { +@@ -463,7 +483,15 @@ Accounts.prototype.encrypt = function (privateKey, password, options) { kdfparams.n = options.n || 8192; // 2048 4096 8192 16384 kdfparams.r = options.r || 8; kdfparams.p = options.p || 1; - derivedKey = scrypt.syncScrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); ++ var start = Date.now(); ++ + if (window.jsb && window.jsb.jcCryptoScrypt) { -+ derivedKey = jsb.jcCryptoScrypt(password, kdfparams.salt, kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); ++ let tmpKey = jsb.jcCryptoScrypt(password, kdfparams.salt, kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); ++ derivedKey = base64ToUint8Buffer(tmpKey); + } else { + derivedKey = scrypt.syncScrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); + } ++ console.log('scrypt generate key cost time: ' + (Date.now() - start)/1000); } else { throw new Error('Unsupported kdf'); -@@ -621,6 +629,9 @@ if (!storageAvailable('localStorage')) { +@@ -621,6 +649,9 @@ if (!storageAvailable('localStorage')) { */ function storageAvailable(type) { var storage;