From 1fa143fa0e76db318251877a78b10532c42e6eac Mon Sep 17 00:00:00 2001 From: Roy Lee Date: Sun, 23 Oct 2022 10:26:42 -0700 Subject: [PATCH] wallet: update passphrase user experience. For users don't want to set/manage a passphrase a default passphrase "passphrase" will be used during wallet creation. At startup, the wallet tries to unlock itself using the default passphrase, or a user provided one (using -p). Users that prefer a passphrase can override the default one at wallet creation time using -p, or use the walletpassphrase rpc when the wallet is running. This will prevent the wallet from auto-unlock, and preserve the lock-by-default behavior. --- config.go | 2 +- lbcwallet.go | 5 +++++ walletsetup.go | 9 +++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/config.go b/config.go index 7d157da..4d989ed 100644 --- a/config.go +++ b/config.go @@ -58,7 +58,7 @@ type config struct { DBTimeout time.Duration `long:"dbtimeout" description:"The timeout value to use when opening the wallet database."` // Passphrase options - Passphrase string `short:"p" long:"passphrase" default-mask:"-" description:"The wallet passphrase (default: \"insecurepassphrase\")"` + Passphrase string `short:"p" long:"passphrase" default-mask:"-" description:"The wallet passphrase (default: \"passphrase\")"` // RPC client options RPCConnect string `short:"c" long:"rpcconnect" description:"Hostname/IP and port of lbcd RPC server to connect to (default localhost:9245, testnet: localhost:19245, regtest: localhost:29245)"` diff --git a/lbcwallet.go b/lbcwallet.go index 33b9dd3..cebcd54 100644 --- a/lbcwallet.go +++ b/lbcwallet.go @@ -85,6 +85,11 @@ func walletMain() error { loader.RunAfterLoad(func(w *wallet.Wallet) { startWalletRPCServices(w, legacyRPCServer) + log.Infof("Unlocking wallet with the default or specified passphrase...") + err = w.Unlock([]byte(cfg.Passphrase), nil) + if err != nil { + log.Infof("Unable to unlock wallet: %v", err) + } }) _, err = loader.OpenExistingWallet() diff --git a/walletsetup.go b/walletsetup.go index a5eedbc..d792654 100644 --- a/walletsetup.go +++ b/walletsetup.go @@ -46,12 +46,9 @@ func createWallet(cfg *config) error { ) // Start by prompting for the passphrase. - reader := bufio.NewReader(os.Stdin) - privPass, err := prompt.Passphrase(true) - if err != nil { - return err - } + passphrase := []byte(cfg.Passphrase) + reader := bufio.NewReader(os.Stdin) // Ascertain the wallet generation seed. This will either be an // automatically generated value the user has already confirmed or a // value the user has entered which has already been validated. @@ -61,7 +58,7 @@ func createWallet(cfg *config) error { } fmt.Println("Creating the wallet...") - w, err := loader.CreateNewWallet(privPass, seed, bday) + w, err := loader.CreateNewWallet(passphrase, seed, bday) if err != nil { return err }