func testEthConfig() *eth.Config { ks := crypto.NewKeyStorePassphrase(path.Join(common.DefaultDataDir(), "keys")) return ð.Config{ DataDir: common.DefaultDataDir(), LogLevel: 5, Etherbase: "primary", AccountManager: accounts.NewManager(ks), NewDB: func(path string) (common.Database, error) { return ethdb.NewMemDatabase() }, } }
func (test *BlockTest) makeEthConfig() *eth.Config { ks := crypto.NewKeyStorePassphrase(filepath.Join(common.DefaultDataDir(), "keystore")) return ð.Config{ DataDir: common.DefaultDataDir(), Verbosity: 5, Etherbase: common.Address{}, AccountManager: accounts.NewManager(ks), NewDB: func(path string) (common.Database, error) { return ethdb.NewMemDatabase() }, } }
func runBlockTest(test *BlockTest) error { ks := crypto.NewKeyStorePassphrase(filepath.Join(common.DefaultDataDir(), "keystore"), crypto.StandardScryptN, crypto.StandardScryptP) am := accounts.NewManager(ks) db, _ := ethdb.NewMemDatabase() cfg := ð.Config{ DataDir: common.DefaultDataDir(), Verbosity: 5, Etherbase: common.Address{}, AccountManager: am, NewDB: func(path string) (ethdb.Database, error) { return db, nil }, } cfg.GenesisBlock = test.Genesis // import pre accounts & construct test genesis block & state root _, err := test.InsertPreState(db, am) if err != nil { return fmt.Errorf("InsertPreState: %v", err) } ethereum, err := eth.New(cfg) if err != nil { return err } err = ethereum.Start() if err != nil { return err } cm := ethereum.BlockChain() validBlocks, err := test.TryBlocksInsert(cm) if err != nil { return err } lastblockhash := common.HexToHash(test.lastblockhash) cmlast := cm.LastBlockHash() if lastblockhash != cmlast { return fmt.Errorf("lastblockhash validation mismatch: want: %x, have: %x", lastblockhash, cmlast) } newDB, err := cm.State() if err != nil { return err } if err = test.ValidatePostState(newDB); err != nil { return fmt.Errorf("post state validation failed: %v", err) } return test.ValidateImportedHeaders(cm, validBlocks) }
func TestKeyStorePassphrase(t *testing.T) { ks := NewKeyStorePassphrase(common.DefaultDataDir(), LightScryptN, LightScryptP) pass := "******" k1, err := ks.GenerateNewKey(randentropy.Reader, pass) if err != nil { t.Fatal(err) } k2 := new(Key) k2, err = ks.GetKey(k1.Address, pass) if err != nil { t.Fatal(err) } if !reflect.DeepEqual(k1.Address, k2.Address) { t.Fatal(err) } if !reflect.DeepEqual(k1.PrivateKey, k2.PrivateKey) { t.Fatal(err) } err = ks.DeleteKey(k2.Address, pass) // also to clean up created files if err != nil { t.Fatal(err) } }
func TestKeyStorePlain(t *testing.T) { ks := NewKeyStorePlain(common.DefaultDataDir()) pass := "" // not used but required by API k1, err := ks.GenerateNewKey(randentropy.Reader, pass) if err != nil { t.Fatal(err) } k2 := new(Key) k2, err = ks.GetKey(k1.Address, pass) if err != nil { t.Fatal(err) } if !reflect.DeepEqual(k1.Address, k2.Address) { t.Fatal(err) } if !reflect.DeepEqual(k1.PrivateKey, k2.PrivateKey) { t.Fatal(err) } err = ks.DeleteKey(k2.Address, pass) if err != nil { t.Fatal(err) } }
// Used only by block tests. func ImportBlockTestKey(privKeyBytes []byte) error { ks := NewKeyStorePassphrase(common.DefaultDataDir() + "/keystore") ecKey := ToECDSA(privKeyBytes) key := &Key{ Id: uuid.NewRandom(), Address: PubkeyToAddress(ecKey.PublicKey), PrivateKey: ecKey, } err := ks.StoreKey(key, "") return err }
func TestImportPreSaleKey(t *testing.T) { // file content of a presale key file generated with: // python pyethsaletool.py genwallet // with password "foo" fileContent := "{\"encseed\": \"26d87f5f2bf9835f9a47eefae571bc09f9107bb13d54ff12a4ec095d01f83897494cf34f7bed2ed34126ecba9db7b62de56c9d7cd136520a0427bfb11b8954ba7ac39b90d4650d3448e31185affcd74226a68f1e94b1108e6e0a4a91cdd83eba\", \"ethaddr\": \"d4584b5f6229b7be90727b0fc8c6b91bb427821f\", \"email\": \"[email protected]\", \"btcaddr\": \"1EVknXyFC68kKNLkh6YnKzW41svSRoaAcx\"}" ks := NewKeyStorePassphrase(common.DefaultDataDir(), LightScryptN, LightScryptP) pass := "******" _, err := ImportPreSaleKey(ks, []byte(fileContent), pass) if err != nil { t.Fatal(err) } }
func (self *jsre) withHistory(op func(*os.File)) { datadir := common.DefaultDataDir() if self.ethereum != nil { datadir = self.ethereum.DataDir } hist, err := os.OpenFile(filepath.Join(datadir, "history"), os.O_RDWR|os.O_CREATE, os.ModePerm) if err != nil { fmt.Printf("unable to open history file: %v\n", err) return } op(hist) hist.Close() }
func IpcSocketPath(ctx *cli.Context) (ipcpath string) { if common.IsWindows() { ipcpath = common.DefaultIpcPath() if ipcpath != ctx.GlobalString(IPCPathFlag.Name) { ipcpath = ctx.GlobalString(IPCPathFlag.Name) } } else { ipcpath = common.DefaultIpcPath() if ctx.GlobalString(IPCPathFlag.Name) != common.DefaultIpcPath() { ipcpath = ctx.GlobalString(IPCPathFlag.Name) } else if ctx.GlobalString(DataDirFlag.Name) != "" && ctx.GlobalString(DataDirFlag.Name) != common.DefaultDataDir() { ipcpath = filepath.Join(ctx.GlobalString(DataDirFlag.Name), "geth.ipc") } } return }
func TestKeyStorePassphraseDecryptionFail(t *testing.T) { ks := NewKeyStorePassphrase(common.DefaultDataDir(), LightScryptN, LightScryptP) pass := "******" k1, err := ks.GenerateNewKey(randentropy.Reader, pass) if err != nil { t.Fatal(err) } _, err = ks.GetKey(k1.Address, "bar") // wrong passphrase if err == nil { t.Fatal(err) } err = ks.DeleteKey(k1.Address, "bar") // wrong passphrase if err == nil { t.Fatal(err) } err = ks.DeleteKey(k1.Address, pass) // to clean up if err != nil { t.Fatal(err) } }
return app } // These are all the command line flags we support. // If you add to this list, please remember to include the // flag in the appropriate command definition. // // The flags are defined here so their names and help texts // are the same for all commands. var ( // General settings DataDirFlag = DirectoryFlag{ Name: "datadir", Usage: "Data directory for the databases and keystore", Value: DirectoryString{common.DefaultDataDir()}, } KeyStoreDirFlag = DirectoryFlag{ Name: "keystore", Usage: "Directory for the keystore (default = inside the datadir)", } NetworkIdFlag = cli.IntFlag{ Name: "networkid", Usage: "Network identifier (integer, 0=Olympic, 1=Frontier, 2=Morden)", Value: eth.NetworkId, } OlympicFlag = cli.BoolFlag{ Name: "olympic", Usage: "Olympic network: pre-configured pre-release test network", } TestNetFlag = cli.BoolFlag{
// DefaultIPCEndpoint returns the IPC path used by default. func DefaultIPCEndpoint() string { config := &Config{DataDir: common.DefaultDataDir(), IPCPath: common.DefaultIPCSocket} return config.IPCEndpoint() }
} if err := app.Run(os.Args); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } var passwordFileFlag = cli.StringFlag{ Name: "password", Usage: "Path to password file (not recommended for interactive use)", Value: "", } var keyDirFlag = utils.DirectoryFlag{ Name: "keydir", Usage: "Key directory to be used", Value: utils.DirectoryString{path.Join(common.DefaultDataDir(), "keys")}, } func unlockAccount(ctx *cli.Context, am *accounts.Manager, account string) (passphrase string) { var err error // Load startup keys. XXX we are going to need a different format // Attempt to unlock the account passphrase = getPassPhrase(ctx, "") accbytes := common.FromHex(account) if len(accbytes) == 0 { utils.Fatalf("Invalid account address '%s'", account) } err = am.Unlock(accbytes, passphrase) if err != nil { utils.Fatalf("Unlock account failed '%v'", err) }