diff --git a/x/auth/types/credentials.go b/x/auth/types/credentials.go index 5580f9a4d2c6..763268962194 100644 --- a/x/auth/types/credentials.go +++ b/x/auth/types/credentials.go @@ -62,7 +62,28 @@ func (m *ModuleCredential) VerifySignature(_ []byte, _ []byte) bool { } func (m *ModuleCredential) Equals(other cryptotypes.PubKey) bool { - return m.String() == other.String() + om, ok := other.(*ModuleCredential) + if !ok { + return false + } + + if m.ModuleName != om.ModuleName { + return false + } + + if len(m.DerivationKeys) != len(om.DerivationKeys) { + return false + } + + for i := range m.DerivationKeys { + for j := range m.DerivationKeys[i] { + if m.DerivationKeys[i][j] != om.DerivationKeys[i][j] { + return false + } + } + } + + return true } func (m *ModuleCredential) Type() string { diff --git a/x/auth/types/credentials_test.go b/x/auth/types/credentials_test.go index 183787b87520..39cc07f22327 100644 --- a/x/auth/types/credentials_test.go +++ b/x/auth/types/credentials_test.go @@ -18,8 +18,9 @@ func TestNewModuleCrendentials(t *testing.T) { require.NoError(t, err) require.Equal(t, expected.String(), addr.String()) - require.Equal(t, credential, authtypes.NewModuleCredential("group", [][]byte{{0x20}, {0x0}})) - require.NotEqual(t, credential, authtypes.NewModuleCredential("group", [][]byte{{0x20}, {0x1}})) + require.True(t, credential.Equals(authtypes.NewModuleCredential("group", [][]byte{{0x20}, {0x0}}))) + require.False(t, credential.Equals(authtypes.NewModuleCredential("group", [][]byte{{0x20}, {0x1}}))) + require.False(t, credential.Equals(authtypes.NewModuleCredential("group", [][]byte{{0x20}}))) } func TestNewBaseAccountWithPubKey(t *testing.T) {