Skip to content

Commit f9041cd

Browse files
mergify[bot]mmsqejulienrbrt
authored
refactor(x/auth): allow empty public keys for GetSignBytesAdapter (backport #19651) (#19675)
Co-authored-by: mmsqe <mavis@crypto.com> Co-authored-by: Julien Robert <julien@rbrt.fr>
1 parent 2abd2ec commit f9041cd

File tree

3 files changed

+49
-8
lines changed

3 files changed

+49
-8
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ Ref: https://keepachangelog.com/en/1.0.0/
4040

4141
## [v0.50.5](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.5) - 2024-XX-XX
4242

43+
### Improvements
44+
45+
* (x/auth) [#19651](https://github.com/cosmos/cosmos-sdk/pull/19651) Allow empty public keys in `GetSignBytesAdapter`.
46+
4347
### Bug Fixes
4448

4549
* (x/auth) [#19549](https://github.com/cosmos/cosmos-sdk/pull/19549) Accept custom get signers when injecting `x/auth/tx`.

x/auth/signing/adapter.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,24 @@ func GetSignBytesAdapter(
4141
return nil, err
4242
}
4343

44-
anyPk, err := codectypes.NewAnyWithValue(signerData.PubKey)
45-
if err != nil {
46-
return nil, err
47-
}
44+
var pubKey *anypb.Any
45+
if signerData.PubKey != nil {
46+
anyPk, err := codectypes.NewAnyWithValue(signerData.PubKey)
47+
if err != nil {
48+
return nil, err
49+
}
4850

51+
pubKey = &anypb.Any{
52+
TypeUrl: anyPk.TypeUrl,
53+
Value: anyPk.Value,
54+
}
55+
}
4956
txSignerData := txsigning.SignerData{
5057
ChainID: signerData.ChainID,
5158
AccountNumber: signerData.AccountNumber,
5259
Sequence: signerData.Sequence,
5360
Address: signerData.Address,
54-
PubKey: &anypb.Any{
55-
TypeUrl: anyPk.TypeUrl,
56-
Value: anyPk.Value,
57-
},
61+
PubKey: pubKey,
5862
}
5963
// Generate the bytes to be signed.
6064
return handlerMap.GetSignBytes(ctx, txSignMode, txSignerData, txData)

x/auth/signing/adapter_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package signing_test
2+
3+
import (
4+
"context"
5+
"testing"
6+
7+
"github.com/stretchr/testify/require"
8+
9+
"github.com/cosmos/cosmos-sdk/testutil/testdata"
10+
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
11+
"github.com/cosmos/cosmos-sdk/types/tx/signing"
12+
authsign "github.com/cosmos/cosmos-sdk/x/auth/signing"
13+
)
14+
15+
func TestGetSignBytesAdapterNoPublicKey(t *testing.T) {
16+
encodingConfig := moduletestutil.MakeTestEncodingConfig()
17+
txConfig := encodingConfig.TxConfig
18+
_, _, addr := testdata.KeyTestPubAddr()
19+
signerData := authsign.SignerData{
20+
Address: addr.String(),
21+
ChainID: "test-chain",
22+
AccountNumber: 11,
23+
Sequence: 15,
24+
}
25+
w := txConfig.NewTxBuilder()
26+
_, err := authsign.GetSignBytesAdapter(
27+
context.Background(),
28+
txConfig.SignModeHandler(),
29+
signing.SignMode_SIGN_MODE_DIRECT,
30+
signerData,
31+
w.GetTx())
32+
require.NoError(t, err)
33+
}

0 commit comments

Comments
 (0)