From 99bc44cf526b2b9692b230308f3b940e782eea7b Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 11 Mar 2015 13:56:02 +0100 Subject: [PATCH] cmd/ethereum: add a flag to switch to unencrytped keystore This is mostly for automated tests. The tests can use the following commands to start the node: ethereum --unencrypted-keys account new ... ethereum --unencrypted-keys --- cmd/ethereum/main.go | 31 ++++++++++++++++++------------- cmd/utils/flags.go | 11 ++++++++++- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/cmd/ethereum/main.go b/cmd/ethereum/main.go index 7b912cf6e..89e19e47f 100644 --- a/cmd/ethereum/main.go +++ b/cmd/ethereum/main.go @@ -127,6 +127,7 @@ runtime will execute the file and exit. utils.RPCEnabledFlag, utils.RPCListenAddrFlag, utils.RPCPortFlag, + utils.UnencryptedKeysFlag, utils.VMDebugFlag, //utils.VMTypeFlag, } @@ -213,20 +214,24 @@ func accountList(ctx *cli.Context) { func accountCreate(ctx *cli.Context) { am := utils.GetAccountManager(ctx) - fmt.Println("The new account will be encrypted with a passphrase.") - fmt.Println("Please enter a passphrase now.") - auth, err := readPassword("Passphrase: ", true) - if err != nil { - utils.Fatalf("%v", err) + passphrase := "" + if !ctx.GlobalBool(utils.UnencryptedKeysFlag.Name) { + fmt.Println("The new account will be encrypted with a passphrase.") + fmt.Println("Please enter a passphrase now.") + auth, err := readPassword("Passphrase: ", true) + if err != nil { + utils.Fatalf("%v", err) + } + confirm, err := readPassword("Repeat Passphrase: ", false) + if err != nil { + utils.Fatalf("%v", err) + } + if auth != confirm { + utils.Fatalf("Passphrases did not match.") + } + passphrase = auth } - confirm, err := readPassword("Repeat Passphrase: ", false) - if err != nil { - utils.Fatalf("%v", err) - } - if auth != confirm { - utils.Fatalf("Passphrases did not match.") - } - acct, err := am.NewAccount(auth) + acct, err := am.NewAccount(passphrase) if err != nil { utils.Fatalf("Could not create the account: %v", err) } diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index e945a32ee..d8b554278 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -95,6 +95,10 @@ var ( Name: "mine", Usage: "Enable mining", } + UnencryptedKeysFlag = cli.BoolFlag{ + Name: "unencrypted-keys", + Usage: "disable private key disk encryption (for testing)", + } LogFileFlag = cli.StringFlag{ Name: "logfile", @@ -220,7 +224,12 @@ func GetChain(ctx *cli.Context) (*core.ChainManager, ethutil.Database, ethutil.D func GetAccountManager(ctx *cli.Context) *accounts.Manager { dataDir := ctx.GlobalString(DataDirFlag.Name) - ks := crypto.NewKeyStorePassphrase(path.Join(dataDir, "keys")) + var ks crypto.KeyStore2 + if ctx.GlobalBool(UnencryptedKeysFlag.Name) { + ks = crypto.NewKeyStorePlain(path.Join(dataDir, "plainkeys")) + } else { + ks = crypto.NewKeyStorePassphrase(path.Join(dataDir, "keys")) + } return accounts.NewManager(ks) }