unlocking coinbase without knowing address
- accounts: remove Manager.getKey - cli: for -unlock coinbase, use account manager Coinbase()
This commit is contained in:
parent
4ec38e3932
commit
11d2ebc06f
@ -36,9 +36,8 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
crand "crypto/rand"
|
crand "crypto/rand"
|
||||||
"os"
|
|
||||||
|
|
||||||
"errors"
|
"errors"
|
||||||
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -101,17 +100,6 @@ func (am *Manager) firstAddr() ([]byte, error) {
|
|||||||
return addrs[0], nil
|
return addrs[0], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (am *Manager) getKey(addr []byte, keyAuth string) (*crypto.Key, error) {
|
|
||||||
if len(addr) == 0 {
|
|
||||||
var err error
|
|
||||||
addr, err = am.firstAddr()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return am.keyStore.GetKey(addr, keyAuth)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (am *Manager) DeleteAccount(address []byte, auth string) error {
|
func (am *Manager) DeleteAccount(address []byte, auth string) error {
|
||||||
return am.keyStore.DeleteKey(address, auth)
|
return am.keyStore.DeleteKey(address, auth)
|
||||||
}
|
}
|
||||||
@ -130,7 +118,7 @@ func (am *Manager) Sign(a Account, toSign []byte) (signature []byte, err error)
|
|||||||
// TimedUnlock unlocks the account with the given address.
|
// TimedUnlock unlocks the account with the given address.
|
||||||
// When timeout has passed, the account will be locked again.
|
// When timeout has passed, the account will be locked again.
|
||||||
func (am *Manager) TimedUnlock(addr []byte, keyAuth string, timeout time.Duration) error {
|
func (am *Manager) TimedUnlock(addr []byte, keyAuth string, timeout time.Duration) error {
|
||||||
key, err := am.getKey(addr, keyAuth)
|
key, err := am.keyStore.GetKey(addr, keyAuth)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -143,7 +131,7 @@ func (am *Manager) TimedUnlock(addr []byte, keyAuth string, timeout time.Duratio
|
|||||||
// stays unlocked until the program exits or until a TimedUnlock
|
// stays unlocked until the program exits or until a TimedUnlock
|
||||||
// timeout (started after the call to Unlock) expires.
|
// timeout (started after the call to Unlock) expires.
|
||||||
func (am *Manager) Unlock(addr []byte, keyAuth string) error {
|
func (am *Manager) Unlock(addr []byte, keyAuth string) error {
|
||||||
key, err := am.getKey(addr, keyAuth)
|
key, err := am.keyStore.GetKey(addr, keyAuth)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -294,7 +294,7 @@ func unlockAccount(ctx *cli.Context, am *accounts.Manager, account string) (pass
|
|||||||
var err error
|
var err error
|
||||||
// Load startup keys. XXX we are going to need a different format
|
// Load startup keys. XXX we are going to need a different format
|
||||||
// Attempt to unlock the account
|
// Attempt to unlock the account
|
||||||
passphrase := getPassPhrase(ctx, "", false)
|
passphrase = getPassPhrase(ctx, "", false)
|
||||||
err = am.Unlock(common.FromHex(account), passphrase)
|
err = am.Unlock(common.FromHex(account), passphrase)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Fatalf("Unlock account failed '%v'", err)
|
utils.Fatalf("Unlock account failed '%v'", err)
|
||||||
@ -310,7 +310,11 @@ func startEth(ctx *cli.Context, eth *eth.Ethereum) {
|
|||||||
account := ctx.GlobalString(utils.UnlockedAccountFlag.Name)
|
account := ctx.GlobalString(utils.UnlockedAccountFlag.Name)
|
||||||
if len(account) > 0 {
|
if len(account) > 0 {
|
||||||
if account == "coinbase" {
|
if account == "coinbase" {
|
||||||
account = ""
|
accbytes, err := am.Coinbase()
|
||||||
|
if err != nil {
|
||||||
|
utils.Fatalf("no coinbase account: %v", err)
|
||||||
|
}
|
||||||
|
account = common.ToHex(accbytes)
|
||||||
}
|
}
|
||||||
unlockAccount(ctx, am, account)
|
unlockAccount(ctx, am, account)
|
||||||
}
|
}
|
||||||
@ -420,6 +424,7 @@ func accountExport(ctx *cli.Context) {
|
|||||||
}
|
}
|
||||||
am := utils.GetAccountManager(ctx)
|
am := utils.GetAccountManager(ctx)
|
||||||
auth := unlockAccount(ctx, am, account)
|
auth := unlockAccount(ctx, am, account)
|
||||||
|
|
||||||
err := am.Export(keyfile, common.FromHex(account), auth)
|
err := am.Export(keyfile, common.FromHex(account), auth)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Fatalf("Account export failed: %v", err)
|
utils.Fatalf("Account export failed: %v", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user