[#1379] neofs-cli: Add key.GetOrGenerate helper

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
Evgenii Stratonikov 2022-05-18 13:47:25 +03:00 committed by fyrchik
parent cd46a7478e
commit 094534e31a
2 changed files with 16 additions and 13 deletions

View file

@ -2,6 +2,7 @@ package key
import (
"crypto/ecdsa"
"errors"
"fmt"
"os"
@ -11,6 +12,8 @@ import (
"github.com/spf13/viper"
)
var errCantGenerateKey = errors.New("can't generate new private key")
// Get returns private key from the following sources:
// 1. WIF
// 2. Raw binary key
@ -43,6 +46,18 @@ func Get() (*ecdsa.PrivateKey, error) {
return nil, ErrInvalidKey
}
// GetOrGenerate is similar to get but generates a new key if commonflags.GenerateKey is set.
func GetOrGenerate() (*ecdsa.PrivateKey, error) {
if viper.GetBool(commonflags.GenerateKey) {
priv, err := keys.NewPrivateKey()
if err != nil {
return nil, fmt.Errorf("%w: %v", errCantGenerateKey, err)
}
return &priv.PrivateKey, nil
}
return Get()
}
func getKeyFromFile(keyPath string) (*ecdsa.PrivateKey, error) {
data, err := os.ReadFile(keyPath)
if err != nil {