public bool Login(string pwd) { var wallet = WalletDao.GetActiveWallet(); if (MD5Helper.ToMD5(pwd) != wallet.Password) { return(false); } var mnemonicWords = CryptHelper.AESDecryptText(wallet.MnemonicWords, pwd); var result = KeyOperator.Instance.Recover(pwd, mnemonicWords); GlobalWallet.Set(new ActiveWallet { Id = wallet.Id, Name = wallet.WalletName, RootXPrivKey = result.RootExtPrivKeyWif, RootXPubKey = result.RootExtPubKeyWif }); return(true); }
public MnemonicResult CreateWallet(string password) { var result = KeyOperator.Instance.CreateMnemonicRoot(password); var mnemonic = string.Join(" ", result.MnemonicWords); var wallet = new WalletInfo { Id = Guid.NewGuid().ToString("N"), WalletName = "Wallet_" + DateTime.Now.ToString("yyyyMMddHHmm"), Password = MD5Helper.ToMD5(password), MnemonicWords = CryptHelper.AESEncryptText(mnemonic, password) }; var rootAddress = new AddressInfo { Id = Guid.NewGuid().ToString("N"), Address = result.RootAddress, ExtPubKeyWif = result.RootExtPubKeyWif, WalletId = wallet.Id, Network = result.Network, KeyPath = null, AddressType = (long)CustomAddressType.Root, AddressCategory = (long)AddressCategory.Default, Name = "Coinbase" }; WalletDao.Create(wallet); AddressDao.Create(rootAddress); GlobalWallet.Set(new ActiveWallet { Id = wallet.Id, Name = wallet.WalletName, RootXPrivKey = result.RootExtPrivKeyWif, RootXPubKey = result.RootExtPubKeyWif }); return(result); }