feat: extra checks on signatures/pubkeys + check the signature first in antehandle (#18194)

This commit is contained in:
Carlos Santiago Yanzon
2023-11-07 13:15:11 +00:00
committed by GitHub
parent 5d83f92ecd
commit 346044afd0
20 changed files with 295 additions and 105 deletions
-2
View File
@@ -1,7 +1,5 @@
package testdata
// nolint
import (
"fmt"
+2 -1
View File
@@ -67,13 +67,14 @@ func (m *TestAnyResponse) UnpackInterfaces(unpacker types.AnyUnpacker) error {
// `gasOverwrite` is set to true, we also check that this consumed
// gas value is equal to the hardcoded `gasConsumed`.
func DeterministicIterations[request, response proto.Message](
ctx sdk.Context,
t *testing.T,
ctx sdk.Context,
req request,
grpcFn func(context.Context, request, ...grpc.CallOption) (response, error),
gasConsumed uint64,
gasOverwrite bool,
) {
t.Helper()
before := ctx.GasMeter().GasConsumed()
prevRes, err := grpcFn(ctx, req)
assert.NilError(t, err)
+4 -3
View File
@@ -6,15 +6,16 @@ package testdata
import (
context "context"
fmt "fmt"
io "io"
math "math"
math_bits "math/bits"
types "github.com/cosmos/cosmos-sdk/codec/types"
grpc1 "github.com/cosmos/gogoproto/grpc"
proto "github.com/cosmos/gogoproto/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
io "io"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
+4 -3
View File
@@ -5,12 +5,13 @@ package testdata
import (
fmt "fmt"
types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
io "io"
math "math"
math_bits "math/bits"
types "github.com/cosmos/cosmos-sdk/codec/types"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
)
// Reference imports to suppress errors if they are not otherwise used.
+4 -3
View File
@@ -3,14 +3,15 @@ package testpb
import (
fmt "fmt"
io "io"
reflect "reflect"
sync "sync"
runtime "github.com/cosmos/cosmos-proto/runtime"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoiface "google.golang.org/protobuf/runtime/protoiface"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
anypb "google.golang.org/protobuf/types/known/anypb"
io "io"
reflect "reflect"
sync "sync"
)
var (
+1
View File
@@ -8,6 +8,7 @@ package testpb
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
+4 -3
View File
@@ -3,15 +3,16 @@ package testpb
import (
fmt "fmt"
io "io"
reflect "reflect"
sync "sync"
runtime "github.com/cosmos/cosmos-proto/runtime"
_ "github.com/cosmos/gogoproto/gogoproto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoiface "google.golang.org/protobuf/runtime/protoiface"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
anypb "google.golang.org/protobuf/types/known/anypb"
io "io"
reflect "reflect"
sync "sync"
)
var (
+5 -4
View File
@@ -2,17 +2,18 @@
package testpb
import (
fmt "fmt"
io "io"
reflect "reflect"
sync "sync"
_ "cosmossdk.io/api/amino"
_ "cosmossdk.io/api/cosmos/msg/v1"
fmt "fmt"
runtime "github.com/cosmos/cosmos-proto/runtime"
_ "github.com/cosmos/gogoproto/gogoproto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoiface "google.golang.org/protobuf/runtime/protoiface"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
io "io"
reflect "reflect"
sync "sync"
)
var (
+1
View File
@@ -8,6 +8,7 @@ package testpb
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
+7 -6
View File
@@ -2,20 +2,21 @@
package testpb
import (
v1beta1 "cosmossdk.io/api/cosmos/tx/v1beta1"
binary "encoding/binary"
fmt "fmt"
io "io"
math "math"
reflect "reflect"
sort "sort"
sync "sync"
v1beta1 "cosmossdk.io/api/cosmos/tx/v1beta1"
runtime "github.com/cosmos/cosmos-proto/runtime"
_ "github.com/cosmos/gogoproto/gogoproto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoiface "google.golang.org/protobuf/runtime/protoiface"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
anypb "google.golang.org/protobuf/types/known/anypb"
io "io"
math "math"
reflect "reflect"
sort "sort"
sync "sync"
)
var (
+11 -1
View File
@@ -6,6 +6,7 @@ import (
"gotest.tools/v3/assert"
"pgregory.net/rapid"
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256r1"
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
@@ -43,8 +44,9 @@ func KeyTestPubAddr() (cryptotypes.PrivKey, cryptotypes.PubKey, sdk.AccAddress)
return key, pub, addr
}
// KeyTestPubAddr generates a new secp256r1 keypair.
// KeyTestPubAddrSecp256R1 generates a new secp256r1 keypair.
func KeyTestPubAddrSecp256R1(t *testing.T) (cryptotypes.PrivKey, cryptotypes.PubKey, sdk.AccAddress) {
t.Helper()
key, err := secp256r1.GenPrivKey()
assert.NilError(t, err)
pub := key.PubKey()
@@ -52,6 +54,14 @@ func KeyTestPubAddrSecp256R1(t *testing.T) (cryptotypes.PrivKey, cryptotypes.Pub
return key, pub, addr
}
// KeyTestPubAddrED25519 generates a new ed25519 keypair.
func KeyTestPubAddrED25519() (cryptotypes.PrivKey, cryptotypes.PubKey, sdk.AccAddress) {
key := ed25519.GenPrivKey()
pub := key.PubKey()
addr := sdk.AccAddress(pub.Address())
return key, pub, addr
}
// NewTestFeeAmount is a test fee amount.
func NewTestFeeAmount() sdk.Coins {
return sdk.NewCoins(sdk.NewInt64Coin("atom", 150))
+4 -3
View File
@@ -6,6 +6,10 @@ package testdata
import (
context "context"
fmt "fmt"
io "io"
math "math"
math_bits "math/bits"
_ "github.com/cosmos/cosmos-sdk/types/msgservice"
_ "github.com/cosmos/cosmos-sdk/types/tx/amino"
_ "github.com/cosmos/gogoproto/gogoproto"
@@ -14,9 +18,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
io "io"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.
+4 -3
View File
@@ -6,13 +6,14 @@ package testdata
import (
encoding_binary "encoding/binary"
fmt "fmt"
io "io"
math "math"
math_bits "math/bits"
types "github.com/cosmos/cosmos-sdk/codec/types"
tx "github.com/cosmos/cosmos-sdk/types/tx"
_ "github.com/cosmos/gogoproto/gogoproto"
proto "github.com/cosmos/gogoproto/proto"
io "io"
math "math"
math_bits "math/bits"
)
// Reference imports to suppress errors if they are not otherwise used.