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") )