forked from TrueCloudLab/frostfs-node
[#1379] neofs-cli: Bind key-related arguments to viper
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
a198a4858c
commit
cd46a7478e
3 changed files with 14 additions and 7 deletions
|
@ -7,16 +7,20 @@ import (
|
||||||
|
|
||||||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/wallet"
|
"github.com/nspcc-dev/neo-go/pkg/wallet"
|
||||||
|
"github.com/nspcc-dev/neofs-node/cmd/neofs-cli/internal/commonflags"
|
||||||
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Get returns private key from the followind sources:
|
// Get returns private key from the following sources:
|
||||||
// 1. WIF
|
// 1. WIF
|
||||||
// 2. Raw binary key
|
// 2. Raw binary key
|
||||||
// 3. Wallet file
|
// 3. Wallet file
|
||||||
// 4. NEP-2 encrypted WIF.
|
// 4. NEP-2 encrypted WIF.
|
||||||
// Ideally we want to touch file-system on the last step.
|
// Ideally we want to touch file-system on the last step.
|
||||||
// However, asking for NEP-2 password seems to be confusing if we provide a wallet.
|
// However, asking for NEP-2 password seems to be confusing if we provide a wallet.
|
||||||
func Get(keyDesc string, address string) (*ecdsa.PrivateKey, error) {
|
// This function assumes that all flags were bind to viper in a `PersistentPreRun`.
|
||||||
|
func Get() (*ecdsa.PrivateKey, error) {
|
||||||
|
keyDesc := viper.GetString(commonflags.WalletPath)
|
||||||
priv, err := keys.NewPrivateKeyFromWIF(keyDesc)
|
priv, err := keys.NewPrivateKeyFromWIF(keyDesc)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return &priv.PrivateKey, nil
|
return &priv.PrivateKey, nil
|
||||||
|
@ -29,7 +33,7 @@ func Get(keyDesc string, address string) (*ecdsa.PrivateKey, error) {
|
||||||
|
|
||||||
w, err := wallet.NewWalletFromFile(keyDesc)
|
w, err := wallet.NewWalletFromFile(keyDesc)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return FromWallet(w, address)
|
return FromWallet(w, viper.GetString(commonflags.Account))
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(keyDesc) == nep2Base58Length {
|
if len(keyDesc) == nep2Base58Length {
|
||||||
|
|
|
@ -151,7 +151,7 @@ func getKey() (*ecdsa.PrivateKey, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getKeyNoGenerate() (*ecdsa.PrivateKey, error) {
|
func getKeyNoGenerate() (*ecdsa.PrivateKey, error) {
|
||||||
return key.Get(viper.GetString(commonflags.WalletPath), viper.GetString(commonflags.Account))
|
return key.Get()
|
||||||
}
|
}
|
||||||
|
|
||||||
type clientWithKey interface {
|
type clientWithKey interface {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/nspcc-dev/neofs-sdk-go/owner"
|
"github.com/nspcc-dev/neofs-sdk-go/owner"
|
||||||
"github.com/nspcc-dev/neofs-sdk-go/session"
|
"github.com/nspcc-dev/neofs-sdk-go/session"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -26,6 +27,10 @@ var createCmd = &cobra.Command{
|
||||||
Use: "create",
|
Use: "create",
|
||||||
Short: "Create session token",
|
Short: "Create session token",
|
||||||
RunE: createSession,
|
RunE: createSession,
|
||||||
|
PersistentPreRun: func(cmd *cobra.Command, _ []string) {
|
||||||
|
_ = viper.BindPFlag(commonflags.WalletPath, cmd.Flags().Lookup(commonflags.WalletPath))
|
||||||
|
_ = viper.BindPFlag(commonflags.Account, cmd.Flags().Lookup(commonflags.Account))
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -43,9 +48,7 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSession(cmd *cobra.Command, _ []string) error {
|
func createSession(cmd *cobra.Command, _ []string) error {
|
||||||
walletPath, _ := cmd.Flags().GetString(commonflags.WalletPath)
|
privKey, err := key.Get()
|
||||||
accPath, _ := cmd.Flags().GetString(commonflags.Account)
|
|
||||||
privKey, err := key.Get(walletPath, accPath)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue