revert: "fix: Prevent signing from wrong key in multisig" (#12539)

Reverts cosmos/cosmos-sdk#12446
This commit is contained in:
Aleksandr Bezobchuk
2022-07-12 14:37:35 +00:00
committed by GitHub
parent dbfef71468
commit 23576d3d49
6 changed files with 17 additions and 108 deletions
+8 -36
View File
@@ -224,6 +224,7 @@ func makeSignCmd() func(cmd *cobra.Command, args []string) error {
return err
}
txFactory := tx.NewFactoryCLI(clientCtx, cmd.Flags())
txCfg := clientCtx.TxConfig
txBuilder, err := txCfg.WrapTxBuilder(newTx)
if err != nil {
@@ -231,7 +232,7 @@ func makeSignCmd() func(cmd *cobra.Command, args []string) error {
}
printSignatureOnly, _ := cmd.Flags().GetBool(flagSigOnly)
multisigkey, _ := cmd.Flags().GetString(flagMultisig)
multisig, _ := cmd.Flags().GetString(flagMultisig)
if err != nil {
return err
}
@@ -242,44 +243,15 @@ func makeSignCmd() func(cmd *cobra.Command, args []string) error {
}
overwrite, _ := f.GetBool(flagOverwrite)
if multisigkey != "" {
var (
multisigName string
multisigAddr sdk.AccAddress
)
// Bech32 decode error, maybe it's a name, we try to fetch from keyring
multisigAddr, multisigName, _, err = client.GetFromFields(clientCtx, txF.Keybase(), multisigkey)
if multisig != "" {
multisigAddr, err := sdk.AccAddressFromBech32(multisig)
if err != nil {
return fmt.Errorf("error getting account from keybase: %w", err)
}
multisigRecord, err := clientCtx.Keyring.Key(multisigName)
if err != nil {
return err
}
multisigPub, err := multisigRecord.GetMultisigPubKey()
if err != nil {
return err
}
fromRecord, err := clientCtx.Keyring.Key(fromName)
if err != nil {
return err
}
fromPubKey, err := fromRecord.GetPubKey()
if err != nil {
return err
}
var found bool
for _, pubkey := range multisigPub.GetPubKeys() {
if pubkey.Equals(fromPubKey) {
found = true
// Bech32 decode error, maybe it's a name, we try to fetch from keyring
multisigAddr, _, _, err = client.GetFromFields(clientCtx, txFactory.Keybase(), multisig)
if err != nil {
return fmt.Errorf("error getting account from keybase: %w", err)
}
}
if !found {
return fmt.Errorf("from key is not a part of multisig key")
}
err = authclient.SignTxWithSignerAddress(
txF, clientCtx, multisigAddr, fromName, txBuilder, clientCtx.Offline, overwrite)
if err != nil {