mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
signer: fix tests to pass + formatting
This commit is contained in:
parent
a93ba823a3
commit
178204f065
6 changed files with 51 additions and 52 deletions
|
|
@ -341,37 +341,6 @@ func initialize(c *cli.Context) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func startAccountManager(ksLocation string, nousb, lightKDF bool) *accounts.Manager {
|
|
||||||
var (
|
|
||||||
backends []accounts.Backend
|
|
||||||
n, p = keystore.StandardScryptN, keystore.StandardScryptP
|
|
||||||
)
|
|
||||||
if lightKDF {
|
|
||||||
n, p = keystore.LightScryptN, keystore.LightScryptP
|
|
||||||
}
|
|
||||||
// support password based accounts
|
|
||||||
if len(ksLocation) > 0 {
|
|
||||||
backends = append(backends, keystore.NewKeyStore(ksLocation, n, p))
|
|
||||||
}
|
|
||||||
if !nousb {
|
|
||||||
// Start a USB hub for Ledger hardware wallets
|
|
||||||
if ledgerhub, err := usbwallet.NewLedgerHub(); err != nil {
|
|
||||||
log.Warn(fmt.Sprintf("Failed to start Ledger hub, disabling: %v", err))
|
|
||||||
} else {
|
|
||||||
backends = append(backends, ledgerhub)
|
|
||||||
log.Debug("Ledger support enabled")
|
|
||||||
}
|
|
||||||
// Start a USB hub for Trezor hardware wallets
|
|
||||||
if trezorhub, err := usbwallet.NewTrezorHub(); err != nil {
|
|
||||||
log.Warn(fmt.Sprintf("Failed to start Trezor hub, disabling: %v", err))
|
|
||||||
} else {
|
|
||||||
backends = append(backends, trezorhub)
|
|
||||||
log.Debug("Trezor support enabled")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return accounts.NewManager(backends...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func signer(c *cli.Context) error {
|
func signer(c *cli.Context) error {
|
||||||
if err := initialize(c); err != nil {
|
if err := initialize(c); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -450,7 +419,7 @@ func signer(c *cli.Context) error {
|
||||||
)
|
)
|
||||||
log.Info("Starting signer", "chainid", chainId, "keystore", ksLoc,
|
log.Info("Starting signer", "chainid", chainId, "keystore", ksLoc,
|
||||||
"light-kdf", lightKdf, "advanced", advanced)
|
"light-kdf", lightKdf, "advanced", advanced)
|
||||||
am := startAccountManager(ksLoc, nousb, lightKdf)
|
am := core.StartClefAccountManager(ksLoc, nousb, lightKdf)
|
||||||
apiImpl := core.NewSignerAPI(am, chainId, nousb, ui, db, advanced)
|
apiImpl := core.NewSignerAPI(am, chainId, nousb, ui, db, advanced)
|
||||||
|
|
||||||
// Establish the bidirectional communication, by creating a new UI backend and registering
|
// Establish the bidirectional communication, by creating a new UI backend and registering
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,37 @@ type Metadata struct {
|
||||||
Origin string `json:"Origin"`
|
Origin string `json:"Origin"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StartClefAccountManager(ksLocation string, nousb, lightKDF bool) *accounts.Manager {
|
||||||
|
var (
|
||||||
|
backends []accounts.Backend
|
||||||
|
n, p = keystore.StandardScryptN, keystore.StandardScryptP
|
||||||
|
)
|
||||||
|
if lightKDF {
|
||||||
|
n, p = keystore.LightScryptN, keystore.LightScryptP
|
||||||
|
}
|
||||||
|
// support password based accounts
|
||||||
|
if len(ksLocation) > 0 {
|
||||||
|
backends = append(backends, keystore.NewKeyStore(ksLocation, n, p))
|
||||||
|
}
|
||||||
|
if !nousb {
|
||||||
|
// Start a USB hub for Ledger hardware wallets
|
||||||
|
if ledgerhub, err := usbwallet.NewLedgerHub(); err != nil {
|
||||||
|
log.Warn(fmt.Sprintf("Failed to start Ledger hub, disabling: %v", err))
|
||||||
|
} else {
|
||||||
|
backends = append(backends, ledgerhub)
|
||||||
|
log.Debug("Ledger support enabled")
|
||||||
|
}
|
||||||
|
// Start a USB hub for Trezor hardware wallets
|
||||||
|
if trezorhub, err := usbwallet.NewTrezorHub(); err != nil {
|
||||||
|
log.Warn(fmt.Sprintf("Failed to start Trezor hub, disabling: %v", err))
|
||||||
|
} else {
|
||||||
|
backends = append(backends, trezorhub)
|
||||||
|
log.Debug("Trezor support enabled")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return accounts.NewManager(backends...)
|
||||||
|
}
|
||||||
|
|
||||||
// MetadataFromContext extracts Metadata from a given context.Context
|
// MetadataFromContext extracts Metadata from a given context.Context
|
||||||
func MetadataFromContext(ctx context.Context) Metadata {
|
func MetadataFromContext(ctx context.Context) Metadata {
|
||||||
m := Metadata{"NA", "NA", "NA", "", ""} // batman
|
m := Metadata{"NA", "NA", "NA", "", ""} // batman
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/accounts"
|
||||||
"github.com/ethereum/go-ethereum/accounts/keystore"
|
"github.com/ethereum/go-ethereum/accounts/keystore"
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
|
|
@ -47,10 +48,9 @@ func (ui *HeadlessUI) OnInputRequired(info UserInputRequest) (UserInputResponse,
|
||||||
|
|
||||||
func (ui *HeadlessUI) OnSignerStartup(info StartupInfo) {
|
func (ui *HeadlessUI) OnSignerStartup(info StartupInfo) {
|
||||||
}
|
}
|
||||||
func (ui *HeadlessUI) RegisterUIServer(api *UIServerAPI){
|
func (ui *HeadlessUI) RegisterUIServer(api *UIServerAPI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (ui *HeadlessUI) OnApprovedTx(tx ethapi.SignTransactionResult) {
|
func (ui *HeadlessUI) OnApprovedTx(tx ethapi.SignTransactionResult) {
|
||||||
fmt.Printf("OnApproved()\n")
|
fmt.Printf("OnApproved()\n")
|
||||||
}
|
}
|
||||||
|
|
@ -94,7 +94,7 @@ func (ui *HeadlessUI) ApproveListing(request *ListRequest) (ListResponse, error)
|
||||||
case "A":
|
case "A":
|
||||||
return ListResponse{request.Accounts}, nil
|
return ListResponse{request.Accounts}, nil
|
||||||
case "1":
|
case "1":
|
||||||
l := make([]Account, 1)
|
l := make([]accounts.Account, 1)
|
||||||
l[0] = request.Accounts[1]
|
l[0] = request.Accounts[1]
|
||||||
return ListResponse{l}, nil
|
return ListResponse{l}, nil
|
||||||
default:
|
default:
|
||||||
|
|
@ -141,13 +141,8 @@ func setup(t *testing.T) (*SignerAPI, chan string) {
|
||||||
}
|
}
|
||||||
var (
|
var (
|
||||||
ui = &HeadlessUI{controller}
|
ui = &HeadlessUI{controller}
|
||||||
api = NewSignerAPI(
|
am = StartClefAccountManager(tmpDirName(t), true, true)
|
||||||
1,
|
api = NewSignerAPI(am, 1337, true, ui, db, true)
|
||||||
tmpDirName(t),
|
|
||||||
true,
|
|
||||||
ui,
|
|
||||||
db,
|
|
||||||
true, true)
|
|
||||||
)
|
)
|
||||||
return api, controller
|
return api, controller
|
||||||
}
|
}
|
||||||
|
|
@ -172,22 +167,22 @@ func failCreateAccountWithPassword(control chan string, api *SignerAPI, password
|
||||||
control <- "Y"
|
control <- "Y"
|
||||||
control <- password
|
control <- password
|
||||||
|
|
||||||
acc, err := api.New(context.Background())
|
addr, err := api.New(context.Background())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Should have returned an error")
|
t.Fatal("Should have returned an error")
|
||||||
}
|
}
|
||||||
if acc.Address != (common.Address{}) {
|
if addr != (common.Address{}) {
|
||||||
t.Fatal("Empty address should be returned")
|
t.Fatal("Empty address should be returned")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func failCreateAccount(control chan string, api *SignerAPI, t *testing.T) {
|
func failCreateAccount(control chan string, api *SignerAPI, t *testing.T) {
|
||||||
control <- "N"
|
control <- "N"
|
||||||
acc, err := api.New(context.Background())
|
addr, err := api.New(context.Background())
|
||||||
if err != ErrRequestDenied {
|
if err != ErrRequestDenied {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if acc.Address != (common.Address{}) {
|
if addr != (common.Address{}) {
|
||||||
t.Fatal("Empty address should be returned")
|
t.Fatal("Empty address should be returned")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ func NewStdIOUI() *StdIOUI {
|
||||||
return ui
|
return ui
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ui *StdIOUI) RegisterUIServer(api *UIServerAPI){
|
func (ui *StdIOUI) RegisterUIServer(api *UIServerAPI) {
|
||||||
ui.client.RegisterName("clef", api)
|
ui.client.RegisterName("clef", api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ func NewRuleEvaluator(next core.UIClientAPI, jsbackend, credentialsBackend stora
|
||||||
|
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
func (r *rulesetUI) RegisterUIServer(api *core.UIServerAPI){
|
func (r *rulesetUI) RegisterUIServer(api *core.UIServerAPI) {
|
||||||
// TODO, make it possible to query from js
|
// TODO, make it possible to query from js
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ type alwaysDenyUI struct{}
|
||||||
func (alwaysDenyUI) OnInputRequired(info core.UserInputRequest) (core.UserInputResponse, error) {
|
func (alwaysDenyUI) OnInputRequired(info core.UserInputRequest) (core.UserInputResponse, error) {
|
||||||
return core.UserInputResponse{}, nil
|
return core.UserInputResponse{}, nil
|
||||||
}
|
}
|
||||||
func (alwaysDenyUI) RegisterUIServer(api *UIServerAPI) {
|
func (alwaysDenyUI) RegisterUIServer(api *core.UIServerAPI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (alwaysDenyUI) OnSignerStartup(info core.StartupInfo) {
|
func (alwaysDenyUI) OnSignerStartup(info core.StartupInfo) {
|
||||||
|
|
@ -135,11 +135,11 @@ func initRuleEngine(js string) (*rulesetUI, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestListRequest(t *testing.T) {
|
func TestListRequest(t *testing.T) {
|
||||||
accs := make([]core.Account, 5)
|
accs := make([]accounts.Account, 5)
|
||||||
|
|
||||||
for i := range accs {
|
for i := range accs {
|
||||||
addr := fmt.Sprintf("000000000000000000000000000000000000000%x", i)
|
addr := fmt.Sprintf("000000000000000000000000000000000000000%x", i)
|
||||||
acc := core.Account{
|
acc := accounts.Account{
|
||||||
Address: common.BytesToAddress(common.Hex2Bytes(addr)),
|
Address: common.BytesToAddress(common.Hex2Bytes(addr)),
|
||||||
URL: accounts.URL{Scheme: "test", Path: fmt.Sprintf("acc-%d", i)},
|
URL: accounts.URL{Scheme: "test", Path: fmt.Sprintf("acc-%d", i)},
|
||||||
}
|
}
|
||||||
|
|
@ -210,6 +210,10 @@ type dummyUI struct {
|
||||||
calls []string
|
calls []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *dummyUI) RegisterUIServer(api *core.UIServerAPI) {
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
func (d *dummyUI) OnInputRequired(info core.UserInputRequest) (core.UserInputResponse, error) {
|
func (d *dummyUI) OnInputRequired(info core.UserInputRequest) (core.UserInputResponse, error) {
|
||||||
d.calls = append(d.calls, "OnInputRequired")
|
d.calls = append(d.calls, "OnInputRequired")
|
||||||
return core.UserInputResponse{}, nil
|
return core.UserInputResponse{}, nil
|
||||||
|
|
@ -533,7 +537,7 @@ func (d *dontCallMe) OnInputRequired(info core.UserInputRequest) (core.UserInput
|
||||||
d.t.Fatalf("Did not expect next-handler to be called")
|
d.t.Fatalf("Did not expect next-handler to be called")
|
||||||
return core.UserInputResponse{}, nil
|
return core.UserInputResponse{}, nil
|
||||||
}
|
}
|
||||||
func (d *dontCallMe) RegisterUIServer(api *UIServerAPI) {
|
func (d *dontCallMe) RegisterUIServer(api *core.UIServerAPI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *dontCallMe) OnSignerStartup(info core.StartupInfo) {
|
func (d *dontCallMe) OnSignerStartup(info core.StartupInfo) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue