|
|
@@ -23,7 +23,6 @@ import (
|
|
|
"github.com/ethereum/go-ethereum/accounts"
|
|
|
"github.com/ethereum/go-ethereum/accounts/keystore"
|
|
|
"github.com/ethereum/go-ethereum/cmd/utils"
|
|
|
- prompt2 "github.com/ethereum/go-ethereum/console/prompt"
|
|
|
"github.com/ethereum/go-ethereum/crypto"
|
|
|
"github.com/ethereum/go-ethereum/log"
|
|
|
"gopkg.in/urfave/cli.v1"
|
|
|
@@ -212,7 +211,7 @@ func unlockAccount(ks *keystore.KeyStore, address string, i int, passwords []str
|
|
|
}
|
|
|
for trials := 0; trials < 3; trials++ {
|
|
|
prompt := fmt.Sprintf("Unlocking account %s | Attempt %d/%d", address, trials+1, 3)
|
|
|
- password := getPassPhrase(prompt, false, i, passwords)
|
|
|
+ password := utils.GetPassPhraseWithList(prompt, false, i, passwords)
|
|
|
err = ks.Unlock(account, password)
|
|
|
if err == nil {
|
|
|
log.Info("Unlocked account", "address", account.Address.Hex())
|
|
|
@@ -233,36 +232,6 @@ func unlockAccount(ks *keystore.KeyStore, address string, i int, passwords []str
|
|
|
return accounts.Account{}, ""
|
|
|
}
|
|
|
|
|
|
-// getPassPhrase retrieves the password associated with an account, either fetched
|
|
|
-// from a list of preloaded passphrases, or requested interactively from the user.
|
|
|
-func getPassPhrase(prompt string, confirmation bool, i int, passwords []string) string {
|
|
|
- // If a list of passwords was supplied, retrieve from them
|
|
|
- if len(passwords) > 0 {
|
|
|
- if i < len(passwords) {
|
|
|
- return passwords[i]
|
|
|
- }
|
|
|
- return passwords[len(passwords)-1]
|
|
|
- }
|
|
|
- // Otherwise prompt the user for the password
|
|
|
- if prompt != "" {
|
|
|
- fmt.Println(prompt)
|
|
|
- }
|
|
|
- password, err := prompt2.Stdin.PromptPassword("Password: ")
|
|
|
- if err != nil {
|
|
|
- utils.Fatalf("Failed to read password: %v", err)
|
|
|
- }
|
|
|
- if confirmation {
|
|
|
- confirm, err := prompt2.Stdin.PromptPassword("Repeat password: ")
|
|
|
- if err != nil {
|
|
|
- utils.Fatalf("Failed to read password confirmation: %v", err)
|
|
|
- }
|
|
|
- if password != confirm {
|
|
|
- utils.Fatalf("Passwords do not match")
|
|
|
- }
|
|
|
- }
|
|
|
- return password
|
|
|
-}
|
|
|
-
|
|
|
func ambiguousAddrRecovery(ks *keystore.KeyStore, err *keystore.AmbiguousAddrError, auth string) accounts.Account {
|
|
|
fmt.Printf("Multiple key files exist for address %x:\n", err.Addr)
|
|
|
for _, a := range err.Matches {
|
|
|
@@ -305,7 +274,7 @@ func accountCreate(ctx *cli.Context) error {
|
|
|
utils.Fatalf("Failed to read configuration: %v", err)
|
|
|
}
|
|
|
|
|
|
- password := getPassPhrase("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
|
|
|
+ password := utils.GetPassPhraseWithList("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
|
|
|
|
|
|
account, err := keystore.StoreKey(keydir, password, scryptN, scryptP)
|
|
|
|
|
|
@@ -333,7 +302,7 @@ func accountUpdate(ctx *cli.Context) error {
|
|
|
|
|
|
for _, addr := range ctx.Args() {
|
|
|
account, oldPassword := unlockAccount(ks, addr, 0, nil)
|
|
|
- newPassword := getPassPhrase("Please give a new password. Do not forget this password.", true, 0, nil)
|
|
|
+ newPassword := utils.GetPassPhraseWithList("Please give a new password. Do not forget this password.", true, 0, nil)
|
|
|
if err := ks.Update(account, oldPassword, newPassword); err != nil {
|
|
|
utils.Fatalf("Could not update the account: %v", err)
|
|
|
}
|
|
|
@@ -352,7 +321,7 @@ func importWallet(ctx *cli.Context) error {
|
|
|
}
|
|
|
|
|
|
stack, _ := makeConfigNode(ctx)
|
|
|
- passphrase := getPassPhrase("", false, 0, utils.MakePasswordList(ctx))
|
|
|
+ passphrase := utils.GetPassPhraseWithList("", false, 0, utils.MakePasswordList(ctx))
|
|
|
|
|
|
ks := stack.AccountManager().Backends(keystore.KeyStoreType)[0].(*keystore.KeyStore)
|
|
|
acct, err := ks.ImportPreSaleKey(keyJSON, passphrase)
|
|
|
@@ -373,7 +342,7 @@ func accountImport(ctx *cli.Context) error {
|
|
|
utils.Fatalf("Failed to load the private key: %v", err)
|
|
|
}
|
|
|
stack, _ := makeConfigNode(ctx)
|
|
|
- passphrase := getPassPhrase("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
|
|
|
+ passphrase := utils.GetPassPhraseWithList("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
|
|
|
|
|
|
ks := stack.AccountManager().Backends(keystore.KeyStoreType)[0].(*keystore.KeyStore)
|
|
|
acct, err := ks.ImportECDSA(key, passphrase)
|