[#749] neofs-adm: refactor password reading into a separate function
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
e21d054fe2
commit
e288a0188d
2 changed files with 23 additions and 27 deletions
|
@ -89,7 +89,7 @@ func TestGenerateAlphabet(t *testing.T) {
|
|||
}
|
||||
|
||||
t.Run("check contract group wallet", func(t *testing.T) {
|
||||
p := filepath.Join(walletDir, contractWalletName)
|
||||
p := filepath.Join(walletDir, contractWalletFilename)
|
||||
w, err := wallet.NewWalletFromFile(p)
|
||||
require.NoError(t, err, "contract wallet doesn't exist")
|
||||
require.Equal(t, 1, len(w.Accounts), "contract wallet must have 1 accout")
|
||||
|
|
|
@ -16,25 +16,18 @@ import (
|
|||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
const contractWalletName = "contract.json"
|
||||
const (
|
||||
contractWalletFilename = "contract.json"
|
||||
contractWalletPasswordKey = "credentials.contract"
|
||||
)
|
||||
|
||||
func initializeContractWallet(walletDir string) (*wallet.Wallet, error) {
|
||||
var (
|
||||
password string
|
||||
err error
|
||||
)
|
||||
|
||||
if key := "credentials.contract"; viper.IsSet(key) {
|
||||
password = viper.GetString(key)
|
||||
} else {
|
||||
prompt := "Password for contract wallet > "
|
||||
password, err = input.ReadPassword(prompt)
|
||||
password, err := getPassword(contractWalletPasswordKey, "Password for contract wallet > ")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
w, err := wallet.NewWallet(path.Join(walletDir, contractWalletName))
|
||||
w, err := wallet.NewWallet(path.Join(walletDir, contractWalletFilename))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -58,7 +51,7 @@ func initializeContractWallet(walletDir string) (*wallet.Wallet, error) {
|
|||
}
|
||||
|
||||
func openContractWallet(cmd *cobra.Command, walletDir string) (*wallet.Wallet, error) {
|
||||
p := path.Join(walletDir, contractWalletName)
|
||||
p := path.Join(walletDir, contractWalletFilename)
|
||||
w, err := wallet.NewWalletFromFile(p)
|
||||
if err != nil {
|
||||
if !os.IsNotExist(err) {
|
||||
|
@ -66,22 +59,16 @@ func openContractWallet(cmd *cobra.Command, walletDir string) (*wallet.Wallet, e
|
|||
}
|
||||
|
||||
cmd.Printf("Contract group wallet is missing, initialize at %s\n",
|
||||
filepath.Join(walletDir, contractWalletName))
|
||||
filepath.Join(walletDir, contractWalletFilename))
|
||||
w, err = initializeContractWallet(walletDir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
var password string
|
||||
if key := "credentials.contract"; viper.IsSet(key) {
|
||||
password = viper.GetString(key)
|
||||
} else {
|
||||
prompt := "Password for contract wallet > "
|
||||
password, err = input.ReadPassword(prompt)
|
||||
password, err := getPassword(contractWalletPasswordKey, "Password for contract wallet > ")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("can't fetch password: %w", err)
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for i := range w.Accounts {
|
||||
|
@ -93,6 +80,15 @@ func openContractWallet(cmd *cobra.Command, walletDir string) (*wallet.Wallet, e
|
|||
return w, nil
|
||||
}
|
||||
|
||||
func getPassword(key string, promps string) (string, error) {
|
||||
if viper.IsSet(key) {
|
||||
return viper.GetString(key), nil
|
||||
}
|
||||
|
||||
prompt := "Password for contract wallet > "
|
||||
return input.ReadPassword(prompt)
|
||||
}
|
||||
|
||||
func (c *initializeContext) addManifestGroup(h util.Uint160, cs *contractState) error {
|
||||
priv := c.ContractWallet.Accounts[0].PrivateKey()
|
||||
pub := priv.PublicKey()
|
||||
|
|
Loading…
Reference in a new issue