jsb scrypt返回base64的字符串, js端解析后转成uint8array
This commit is contained in:
parent
d241281d8a
commit
4934c5e7d5
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user