|
|
|
@ -22,11 +22,13 @@ import ( |
|
|
|
|
"errors" |
|
|
|
|
"fmt" |
|
|
|
|
"math/big" |
|
|
|
|
"os" |
|
|
|
|
"reflect" |
|
|
|
|
"strings" |
|
|
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/accounts" |
|
|
|
|
"github.com/ethereum/go-ethereum/accounts/keystore" |
|
|
|
|
"github.com/ethereum/go-ethereum/accounts/scwallet" |
|
|
|
|
"github.com/ethereum/go-ethereum/accounts/usbwallet" |
|
|
|
|
"github.com/ethereum/go-ethereum/common" |
|
|
|
|
"github.com/ethereum/go-ethereum/common/hexutil" |
|
|
|
@ -124,7 +126,7 @@ type Metadata struct { |
|
|
|
|
Origin string `json:"Origin"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func StartClefAccountManager(ksLocation string, nousb, lightKDF bool) *accounts.Manager { |
|
|
|
|
func StartClefAccountManager(ksLocation string, nousb, lightKDF bool, scpath string) *accounts.Manager { |
|
|
|
|
var ( |
|
|
|
|
backends []accounts.Backend |
|
|
|
|
n, p = keystore.StandardScryptN, keystore.StandardScryptP |
|
|
|
@ -159,6 +161,26 @@ func StartClefAccountManager(ksLocation string, nousb, lightKDF bool) *accounts. |
|
|
|
|
log.Debug("Trezor support enabled via WebUSB") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Start a smart card hub
|
|
|
|
|
if len(scpath) > 0 { |
|
|
|
|
// Sanity check that the smartcard path is valid
|
|
|
|
|
fi, err := os.Stat(scpath) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Info("Smartcard socket file missing, disabling", "err", err) |
|
|
|
|
} else { |
|
|
|
|
if fi.Mode()&os.ModeType != os.ModeSocket { |
|
|
|
|
log.Error("Invalid smartcard socket file type", "path", scpath, "type", fi.Mode().String()) |
|
|
|
|
} else { |
|
|
|
|
if schub, err := scwallet.NewHub(scpath, scwallet.Scheme, ksLocation); err != nil { |
|
|
|
|
log.Warn(fmt.Sprintf("Failed to start smart card hub, disabling: %v", err)) |
|
|
|
|
} else { |
|
|
|
|
backends = append(backends, schub) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Clef doesn't allow insecure http account unlock.
|
|
|
|
|
return accounts.NewManager(&accounts.Config{InsecureUnlockAllowed: false}, backends...) |
|
|
|
|
} |
|
|
|
|