From fc67a58e62e5dee1308c4f68a991200bb967ac57 Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Wed, 24 May 2023 11:03:58 +0300 Subject: [PATCH] cli: drop support for binary keys, use wallets Wallets were introduced way back when in 0.27.5 and that's the way keys should be stored. We've had enough transition period for people to adjust to using them. Binary keys are dangerous and inconvenient (NEP-6 is common for all of the Neo tooling, everyone knows how to use it), therefore we shouldn't provide support for them. Related to #2136. Signed-off-by: Roman Khimov --- CHANGELOG.md | 1 + cmd/neofs-cli/internal/commonflags/flags.go | 2 +- cmd/neofs-cli/internal/key/key_test.go | 2 +- cmd/neofs-cli/internal/key/raw.go | 18 +++++++----------- cmd/neofs-cli/internal/key/wallet.go | 2 +- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9697caec74..ecb4c76e51d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ Changelog for NeoFS Node ### Removed - Non-notary mode support for sidechain (#2321) +- Support for binary keys in the CLI (#2357) ### Updated - Update minimal supported Go version up to v1.18 (#2340) diff --git a/cmd/neofs-cli/internal/commonflags/flags.go b/cmd/neofs-cli/internal/commonflags/flags.go index 8a71afac7ed..7ed0e7d28e5 100644 --- a/cmd/neofs-cli/internal/commonflags/flags.go +++ b/cmd/neofs-cli/internal/commonflags/flags.go @@ -18,7 +18,7 @@ const ( WalletPath = "wallet" WalletPathShorthand = "w" WalletPathDefault = "" - WalletPathUsage = "Path to the wallet or binary key" + WalletPathUsage = "Path to the wallet" Account = "address" AccountShorthand = "" diff --git a/cmd/neofs-cli/internal/key/key_test.go b/cmd/neofs-cli/internal/key/key_test.go index b54bf29e780..fb1ca7e2bd7 100644 --- a/cmd/neofs-cli/internal/key/key_test.go +++ b/cmd/neofs-cli/internal/key/key_test.go @@ -98,7 +98,7 @@ func Test_getOrGenerate(t *testing.T) { }) t.Run("raw key", func(t *testing.T) { - checkKey(t, keyPath, rawKey) + checkKeyError(t, keyPath, ErrInvalidKey) }) t.Run("generate", func(t *testing.T) { diff --git a/cmd/neofs-cli/internal/key/raw.go b/cmd/neofs-cli/internal/key/raw.go index 134e6f01335..f69f14074b6 100644 --- a/cmd/neofs-cli/internal/key/raw.go +++ b/cmd/neofs-cli/internal/key/raw.go @@ -27,20 +27,16 @@ func Get(cmd *cobra.Command) *ecdsa.PrivateKey { func get(cmd *cobra.Command) (*ecdsa.PrivateKey, error) { keyDesc := viper.GetString(commonflags.WalletPath) - data, err := os.ReadFile(keyDesc) + w, err := wallet.NewWalletFromFile(keyDesc) if err != nil { - return nil, fmt.Errorf("%w: %v", ErrFs, err) - } - - priv, err := keys.NewPrivateKeyFromBytes(data) - if err != nil { - w, err := wallet.NewWalletFromFile(keyDesc) - if err == nil { - return FromWallet(cmd, w, viper.GetString(commonflags.Account)) + var perr = new(*os.PathError) + if errors.As(err, perr) { + return nil, fmt.Errorf("%w: %v", ErrFs, err) + } else { + return nil, fmt.Errorf("%w: %v", ErrInvalidKey, err) } - return nil, fmt.Errorf("%w: %v", ErrInvalidKey, err) } - return &priv.PrivateKey, nil + return FromWallet(cmd, w, viper.GetString(commonflags.Account)) } // GetOrGenerate is similar to get but generates a new key if commonflags.GenerateKey is set. diff --git a/cmd/neofs-cli/internal/key/wallet.go b/cmd/neofs-cli/internal/key/wallet.go index 77ee8d926a7..e77a7c1defb 100644 --- a/cmd/neofs-cli/internal/key/wallet.go +++ b/cmd/neofs-cli/internal/key/wallet.go @@ -17,7 +17,7 @@ import ( // Key-related errors. var ( ErrFs = errors.New("unable to read file from given path") - ErrInvalidKey = errors.New("provided key is incorrect, only wallet or binary key supported") + ErrInvalidKey = errors.New("provided wallet is incorrect") ErrInvalidAddress = errors.New("--address option must be specified and valid") ErrInvalidPassword = errors.New("invalid password for the encrypted key") )