package morph import ( "fmt" commonCmd "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/internal/common" "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neo-go/pkg/encoding/address" "github.com/nspcc-dev/neo-go/pkg/util" "github.com/spf13/cobra" "github.com/spf13/viper" ) func getFrostfsIDAdmin(v *viper.Viper) (util.Uint160, bool, error) { admin := v.GetString(frostfsIDAdminConfigKey) if admin == "" { return util.Uint160{}, false, nil } h, err := address.StringToUint160(admin) if err == nil { return h, true, nil } h, err = util.Uint160DecodeStringLE(admin) if err == nil { return h, true, nil } pk, err := keys.NewPublicKeyFromString(admin) if err == nil { return pk.GetScriptHash(), true, nil } return util.Uint160{}, true, fmt.Errorf("frostfsid: admin is invalid: '%s'", admin) } func getFrostfsIDSubjectKey(cmd *cobra.Command) *keys.PublicKey { subjKeyHex, _ := cmd.Flags().GetString(subjectKeyFlag) subjKey, err := keys.NewPublicKeyFromString(subjKeyHex) commonCmd.ExitOnErr(cmd, "invalid subject key: %w", err) return subjKey } func getFrostfsIDSubjectAddress(cmd *cobra.Command) util.Uint160 { subjAddress, _ := cmd.Flags().GetString(subjectAddressFlag) subjAddr, err := address.StringToUint160(subjAddress) commonCmd.ExitOnErr(cmd, "invalid subject address: %w", err) return subjAddr }