cmd/clef: enable smartcard hub (#19649)
* cmd/clef: Enable smartcard hub * clef: don't error is pcsc is not installed
This commit is contained in:
committed by
Martin Holst Swende
parent
7c9307c683
commit
b8ca3cb7d2
@ -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...)
|
||||
}
|
||||
|
Reference in New Issue
Block a user