From 8c43cfe55ab175df43c028aa7c432e28d3482ed1 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 17 May 2023 10:39:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A3=80=E6=9F=A5=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E7=9A=84=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E6=A3=80=E6=9F=A5address=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 6 +++++- src/manage/WalletManage.ts | 32 +++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/index.ts b/src/index.ts index b7003ae..978fd01 100644 --- a/src/index.ts +++ b/src/index.ts @@ -27,7 +27,7 @@ import { parseUrl } from "./manage/SchemeManage"; import { loadInternalWallet, loginByEmail, - restoreWalletByMnemonic, + verifyPassword, walletPreLogin, } from "./manage/WalletManage"; import { EmailVerifySvr } from "./services/EmailVerifySvr"; @@ -115,6 +115,10 @@ export default class JCWallet { return walletPreLogin(channel); } + public verifyLocalPass(pass: string) { + return verifyPassword(pass); + } + public emailLogin(email: string, password: string) { return loginByEmail(email, password); } diff --git a/src/manage/WalletManage.ts b/src/manage/WalletManage.ts index a46a175..7c0b835 100644 --- a/src/manage/WalletManage.ts +++ b/src/manage/WalletManage.ts @@ -98,6 +98,20 @@ export async function loginByEmail(email: string, password: string) { } export async function loadInternalWallet(pass: string) { + let walletEnv = new WalletEnv(); + let address = await prepareInternalWallet(pass); + if (walletEnv.address && walletEnv.address !== address) { + throw new ZError(10, "address not match, perhaps wrong password"); + } + if (!walletEnv.address) { + retry(() => uploadWalletInfo({ address }), MAX_UPLOAD_COUNT); + } + walletEnv.address = address; + jsb.storeLocalPass(pass); + return address; +} + +async function prepareInternalWallet(pass: string) { let walletEnv = new WalletEnv(); console.log(JSON.stringify(walletEnv)); if (!walletEnv.key) { @@ -112,17 +126,17 @@ export async function loadInternalWallet(pass: string) { walletEnv.salt, pass ); - console.log("prepare wallet result: " + address); - if (walletEnv.address && walletEnv.address !== address) { - throw new ZError(10, "address not match, perhaps wrong password"); - } - if (!walletEnv.address) { - retry(() => uploadWalletInfo({ address }), MAX_UPLOAD_COUNT); - } - walletEnv.address = address; - jsb.storeLocalPass(pass); return address; } +/** + * calc wallet address and check if address is same with walletEnv.address + * @param pass + * @returns + */ +export async function verifyPassword(pass: string) { + let address = await prepareInternalWallet(pass); + return new WalletEnv().address === address; +} export function walletSign(str: string) { let result = jsb.walletSign(str);