Remove unnecessary logs & fix flaky test
This commit is contained in:
parent
6ad047d56f
commit
0c79e50ca8
|
@ -31,7 +31,7 @@ func (d *DataSync) Handle(sender *ecdsa.PublicKey, payload []byte) [][]byte {
|
||||||
datasyncMessage, err := unwrap(payload)
|
datasyncMessage, err := unwrap(payload)
|
||||||
// If it failed to decode is not a protobuf message, if it successfully decoded but body is empty, is likedly a protobuf wrapped message
|
// If it failed to decode is not a protobuf message, if it successfully decoded but body is empty, is likedly a protobuf wrapped message
|
||||||
if err != nil || !datasyncMessage.IsValid() {
|
if err != nil || !datasyncMessage.IsValid() {
|
||||||
logger.Debug("handling non-datasync message", zap.Error(err), zap.Bool("datasyncMessage.IsValid()", datasyncMessage.IsValid()))
|
logger.Debug("handling non-datasync message", zap.Error(err), zap.Bool("datasyncMessage.IsValid()", datasyncMessage.IsValid()), zap.Any("message", datasyncMessage))
|
||||||
// Not a datasync message, return unchanged
|
// Not a datasync message, return unchanged
|
||||||
payloads = append(payloads, payload)
|
payloads = append(payloads, payload)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -67,6 +67,11 @@ func (t *NodeTransport) Send(_ state.PeerID, peer state.PeerID, payload protobuf
|
||||||
payloads := splitPayloadInBatches(&payload, int(t.maxMessageSize))
|
payloads := splitPayloadInBatches(&payload, int(t.maxMessageSize))
|
||||||
for _, payload := range payloads {
|
for _, payload := range payloads {
|
||||||
|
|
||||||
|
if !payload.IsValid() {
|
||||||
|
t.logger.Error("payload is invalid")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
data, err := proto.Marshal(payload)
|
data, err := proto.Marshal(payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -13,6 +13,7 @@ import (
|
||||||
|
|
||||||
"github.com/status-im/status-go/eth-node/crypto"
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
"github.com/status-im/status-go/eth-node/crypto/ecies"
|
"github.com/status-im/status-go/eth-node/crypto/ecies"
|
||||||
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
|
|
||||||
"github.com/status-im/status-go/protocol/encryption/multidevice"
|
"github.com/status-im/status-go/protocol/encryption/multidevice"
|
||||||
)
|
)
|
||||||
|
@ -244,9 +245,14 @@ func (s *encryptor) DecryptPayload(myIdentityKey *ecdsa.PrivateKey, theirIdentit
|
||||||
|
|
||||||
// We should not be sending a signal if it's coming from us, as we receive our own messages
|
// We should not be sending a signal if it's coming from us, as we receive our own messages
|
||||||
if msg == nil && !samePublicKeys(*theirIdentityKey, myIdentityKey.PublicKey) {
|
if msg == nil && !samePublicKeys(*theirIdentityKey, myIdentityKey.PublicKey) {
|
||||||
|
s.logger.Debug("message is coming from someone else, but not targeting our installation id")
|
||||||
return nil, ErrDeviceNotFound
|
return nil, ErrDeviceNotFound
|
||||||
} else if msg == nil {
|
} else if msg == nil && theirInstallationID != s.config.InstallationID {
|
||||||
|
s.logger.Debug("message is coming from same public key, but different installation id")
|
||||||
return nil, ErrNotPairedDevice
|
return nil, ErrNotPairedDevice
|
||||||
|
} else if msg == nil && theirInstallationID == s.config.InstallationID {
|
||||||
|
s.logger.Debug("message is coming from us and is nil")
|
||||||
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
payload := msg.GetPayload()
|
payload := msg.GetPayload()
|
||||||
|
@ -461,9 +467,8 @@ func (s *encryptor) GetPublicBundle(theirIdentityKey *ecdsa.PublicKey, installat
|
||||||
func (s *encryptor) EncryptPayload(theirIdentityKey *ecdsa.PublicKey, myIdentityKey *ecdsa.PrivateKey, installations []*multidevice.Installation, payload []byte) (map[string]*DirectMessageProtocol, []*multidevice.Installation, error) {
|
func (s *encryptor) EncryptPayload(theirIdentityKey *ecdsa.PublicKey, myIdentityKey *ecdsa.PrivateKey, installations []*multidevice.Installation, payload []byte) (map[string]*DirectMessageProtocol, []*multidevice.Installation, error) {
|
||||||
logger := s.logger.With(
|
logger := s.logger.With(
|
||||||
zap.String("site", "EncryptPayload"),
|
zap.String("site", "EncryptPayload"),
|
||||||
zap.Binary("their-identity-key", crypto.FromECDSAPub(theirIdentityKey)))
|
zap.String("their-identity-key", types.EncodeHex(crypto.FromECDSAPub(theirIdentityKey))))
|
||||||
|
|
||||||
logger.Debug("encrypting payload")
|
|
||||||
// Which installations we are sending the message to
|
// Which installations we are sending the message to
|
||||||
var targetedInstallations []*multidevice.Installation
|
var targetedInstallations []*multidevice.Installation
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
"github.com/status-im/status-go/eth-node/crypto"
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
|
|
||||||
"github.com/status-im/status-go/protocol/encryption/multidevice"
|
"github.com/status-im/status-go/protocol/encryption/multidevice"
|
||||||
"github.com/status-im/status-go/protocol/encryption/publisher"
|
"github.com/status-im/status-go/protocol/encryption/publisher"
|
||||||
|
@ -146,18 +147,12 @@ func (p *Protocol) Stop() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Protocol) addBundle(myIdentityKey *ecdsa.PrivateKey, msg *ProtocolMessage) error {
|
func (p *Protocol) addBundle(myIdentityKey *ecdsa.PrivateKey, msg *ProtocolMessage) error {
|
||||||
logger := p.logger.With(zap.String("site", "addBundle"))
|
|
||||||
|
|
||||||
// Get a bundle
|
// Get a bundle
|
||||||
installations, err := p.multidevice.GetOurActiveInstallations(&myIdentityKey.PublicKey)
|
installations, err := p.multidevice.GetOurActiveInstallations(&myIdentityKey.PublicKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Info("adding bundle to the message",
|
|
||||||
zap.Any("installations", installations),
|
|
||||||
)
|
|
||||||
|
|
||||||
bundle, err := p.encryptor.CreateBundle(myIdentityKey, installations)
|
bundle, err := p.encryptor.CreateBundle(myIdentityKey, installations)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -186,12 +181,6 @@ func (p *Protocol) BuildPublicMessage(myIdentityKey *ecdsa.PrivateKey, payload [
|
||||||
|
|
||||||
// BuildDirectMessage returns a 1:1 chat message and optionally a negotiated topic given the user identity private key, the recipient's public key, and a payload
|
// BuildDirectMessage returns a 1:1 chat message and optionally a negotiated topic given the user identity private key, the recipient's public key, and a payload
|
||||||
func (p *Protocol) BuildDirectMessage(myIdentityKey *ecdsa.PrivateKey, publicKey *ecdsa.PublicKey, payload []byte) (*ProtocolMessageSpec, error) {
|
func (p *Protocol) BuildDirectMessage(myIdentityKey *ecdsa.PrivateKey, publicKey *ecdsa.PublicKey, payload []byte) (*ProtocolMessageSpec, error) {
|
||||||
logger := p.logger.With(
|
|
||||||
zap.String("site", "BuildDirectMessage"),
|
|
||||||
zap.Binary("public-key", crypto.FromECDSAPub(publicKey)),
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.Debug("building direct message")
|
|
||||||
|
|
||||||
// Get recipients installations.
|
// Get recipients installations.
|
||||||
activeInstallations, err := p.multidevice.GetActiveInstallations(publicKey)
|
activeInstallations, err := p.multidevice.GetActiveInstallations(publicKey)
|
||||||
|
@ -230,10 +219,6 @@ func (p *Protocol) BuildDirectMessage(myIdentityKey *ecdsa.PrivateKey, publicKey
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Debug("shared secret agreement",
|
|
||||||
zap.Bool("has-shared-secret", sharedSecret != nil),
|
|
||||||
zap.Bool("agreed", agreed))
|
|
||||||
|
|
||||||
spec := &ProtocolMessageSpec{
|
spec := &ProtocolMessageSpec{
|
||||||
SharedSecret: sharedSecret,
|
SharedSecret: sharedSecret,
|
||||||
AgreedSecret: agreed,
|
AgreedSecret: agreed,
|
||||||
|
@ -269,8 +254,6 @@ func (p *Protocol) BuildDHMessage(myIdentityKey *ecdsa.PrivateKey, destination *
|
||||||
func (p *Protocol) ProcessPublicBundle(myIdentityKey *ecdsa.PrivateKey, bundle *Bundle) ([]*multidevice.Installation, error) {
|
func (p *Protocol) ProcessPublicBundle(myIdentityKey *ecdsa.PrivateKey, bundle *Bundle) ([]*multidevice.Installation, error) {
|
||||||
logger := p.logger.With(zap.String("site", "ProcessPublicBundle"))
|
logger := p.logger.With(zap.String("site", "ProcessPublicBundle"))
|
||||||
|
|
||||||
logger.Debug("processing public bundle")
|
|
||||||
|
|
||||||
if err := p.encryptor.ProcessPublicBundle(myIdentityKey, bundle); err != nil {
|
if err := p.encryptor.ProcessPublicBundle(myIdentityKey, bundle); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -280,10 +263,6 @@ func (p *Protocol) ProcessPublicBundle(myIdentityKey *ecdsa.PrivateKey, bundle *
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Debug("recovered installations",
|
|
||||||
zap.Int("installations", len(installations)),
|
|
||||||
zap.Bool("enabled", enabled))
|
|
||||||
|
|
||||||
// TODO(adam): why do we add installations using identity obtained from GetIdentity()
|
// TODO(adam): why do we add installations using identity obtained from GetIdentity()
|
||||||
// instead of the output of crypto.CompressPubkey()? I tried the second option
|
// instead of the output of crypto.CompressPubkey()? I tried the second option
|
||||||
// and the unit tests TestTopic and TestMaxDevices fail.
|
// and the unit tests TestTopic and TestMaxDevices fail.
|
||||||
|
@ -311,8 +290,6 @@ func (p *Protocol) recoverInstallationsFromBundle(myIdentityKey *ecdsa.PrivateKe
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := p.logger.With(zap.String("site", "recoverInstallationsFromBundle"))
|
|
||||||
|
|
||||||
myIdentityStr := fmt.Sprintf("0x%x", crypto.FromECDSAPub(&myIdentityKey.PublicKey))
|
myIdentityStr := fmt.Sprintf("0x%x", crypto.FromECDSAPub(&myIdentityKey.PublicKey))
|
||||||
theirIdentityStr := fmt.Sprintf("0x%x", crypto.FromECDSAPub(theirIdentity))
|
theirIdentityStr := fmt.Sprintf("0x%x", crypto.FromECDSAPub(theirIdentity))
|
||||||
// Any device from other peers will be considered enabled, ours needs to
|
// Any device from other peers will be considered enabled, ours needs to
|
||||||
|
@ -321,7 +298,6 @@ func (p *Protocol) recoverInstallationsFromBundle(myIdentityKey *ecdsa.PrivateKe
|
||||||
signedPreKeys := bundle.GetSignedPreKeys()
|
signedPreKeys := bundle.GetSignedPreKeys()
|
||||||
|
|
||||||
for installationID, signedPreKey := range signedPreKeys {
|
for installationID, signedPreKey := range signedPreKeys {
|
||||||
logger.Info("recovered installation", zap.String("installation-id", installationID))
|
|
||||||
if installationID != p.multidevice.InstallationID() {
|
if installationID != p.multidevice.InstallationID() {
|
||||||
installations = append(installations, &multidevice.Installation{
|
installations = append(installations, &multidevice.Installation{
|
||||||
Identity: theirIdentityStr,
|
Identity: theirIdentityStr,
|
||||||
|
@ -401,7 +377,11 @@ func (p *Protocol) HandleMessage(
|
||||||
logger := p.logger.With(zap.String("site", "HandleMessage"))
|
logger := p.logger.With(zap.String("site", "HandleMessage"))
|
||||||
response := &DecryptMessageResponse{}
|
response := &DecryptMessageResponse{}
|
||||||
|
|
||||||
logger.Debug("received a protocol message", zap.Binary("sender-public-key", crypto.FromECDSAPub(theirPublicKey)), zap.Binary("message-id", messageID))
|
logger.Debug("received a protocol message",
|
||||||
|
zap.String("sender-public-key",
|
||||||
|
types.EncodeHex(crypto.FromECDSAPub(theirPublicKey))),
|
||||||
|
zap.String("my-installation-id", p.encryptor.config.InstallationID),
|
||||||
|
zap.String("message-id", types.EncodeHex(messageID)))
|
||||||
|
|
||||||
if p.encryptor == nil {
|
if p.encryptor == nil {
|
||||||
return nil, errors.New("encryption service not initialized")
|
return nil, errors.New("encryption service not initialized")
|
||||||
|
@ -419,7 +399,6 @@ func (p *Protocol) HandleMessage(
|
||||||
|
|
||||||
// Check if it's a public message
|
// Check if it's a public message
|
||||||
if publicMessage := protocolMessage.GetPublicMessage(); publicMessage != nil {
|
if publicMessage := protocolMessage.GetPublicMessage(); publicMessage != nil {
|
||||||
logger.Debug("received a public message in direct message")
|
|
||||||
// Nothing to do, as already in cleartext
|
// Nothing to do, as already in cleartext
|
||||||
response.DecryptedMessage = publicMessage
|
response.DecryptedMessage = publicMessage
|
||||||
return response, nil
|
return response, nil
|
||||||
|
@ -427,7 +406,6 @@ func (p *Protocol) HandleMessage(
|
||||||
|
|
||||||
// Decrypt message
|
// Decrypt message
|
||||||
if directMessage := protocolMessage.GetDirectMessage(); directMessage != nil {
|
if directMessage := protocolMessage.GetDirectMessage(); directMessage != nil {
|
||||||
logger.Debug("processing direct message")
|
|
||||||
message, err := p.encryptor.DecryptPayload(
|
message, err := p.encryptor.DecryptPayload(
|
||||||
myIdentityKey,
|
myIdentityKey,
|
||||||
theirPublicKey,
|
theirPublicKey,
|
||||||
|
@ -441,10 +419,7 @@ func (p *Protocol) HandleMessage(
|
||||||
|
|
||||||
bundles := protocolMessage.GetBundles()
|
bundles := protocolMessage.GetBundles()
|
||||||
version := getProtocolVersion(bundles, protocolMessage.GetInstallationId())
|
version := getProtocolVersion(bundles, protocolMessage.GetInstallationId())
|
||||||
logger.Debug("direct message version", zap.Uint32("version", version))
|
|
||||||
if version >= sharedSecretNegotiationVersion {
|
if version >= sharedSecretNegotiationVersion {
|
||||||
logger.Debug("negotiating shared secret",
|
|
||||||
zap.Binary("public-key", crypto.FromECDSAPub(theirPublicKey)))
|
|
||||||
sharedSecret, err := p.secret.Generate(myIdentityKey, theirPublicKey, protocolMessage.GetInstallationId())
|
sharedSecret, err := p.secret.Generate(myIdentityKey, theirPublicKey, protocolMessage.GetInstallationId())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -49,14 +49,6 @@ func (s *SharedSecret) generate(myPrivateKey *ecdsa.PrivateKey, theirPublicKey *
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := s.logger.With(zap.String("site", "generate"))
|
|
||||||
|
|
||||||
logger.Debug(
|
|
||||||
"saving a shared key",
|
|
||||||
zap.Binary("their-public-key", crypto.FromECDSAPub(theirPublicKey)),
|
|
||||||
zap.String("installation-id", installationID),
|
|
||||||
)
|
|
||||||
|
|
||||||
theirIdentity := crypto.CompressPubkey(theirPublicKey)
|
theirIdentity := crypto.CompressPubkey(theirPublicKey)
|
||||||
if err = s.persistence.Add(theirIdentity, sharedKey, installationID); err != nil {
|
if err = s.persistence.Add(theirIdentity, sharedKey, installationID); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -72,14 +64,6 @@ func (s *SharedSecret) Generate(myPrivateKey *ecdsa.PrivateKey, theirPublicKey *
|
||||||
|
|
||||||
// Agreed returns true if a secret has been acknowledged by all the installationIDs.
|
// Agreed returns true if a secret has been acknowledged by all the installationIDs.
|
||||||
func (s *SharedSecret) Agreed(myPrivateKey *ecdsa.PrivateKey, myInstallationID string, theirPublicKey *ecdsa.PublicKey, theirInstallationIDs []string) (*Secret, bool, error) {
|
func (s *SharedSecret) Agreed(myPrivateKey *ecdsa.PrivateKey, myInstallationID string, theirPublicKey *ecdsa.PublicKey, theirInstallationIDs []string) (*Secret, bool, error) {
|
||||||
logger := s.logger.With(zap.String("site", "Agreed"))
|
|
||||||
|
|
||||||
logger.Debug(
|
|
||||||
"checking if shared secret is acknowledged",
|
|
||||||
zap.Binary("their-public-key", crypto.FromECDSAPub(theirPublicKey)),
|
|
||||||
zap.Strings("their-installation-ids", theirInstallationIDs),
|
|
||||||
)
|
|
||||||
|
|
||||||
secret, err := s.generate(myPrivateKey, theirPublicKey, myInstallationID)
|
secret, err := s.generate(myPrivateKey, theirPublicKey, myInstallationID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
|
@ -97,7 +81,6 @@ func (s *SharedSecret) Agreed(myPrivateKey *ecdsa.PrivateKey, myInstallationID s
|
||||||
|
|
||||||
for _, installationID := range theirInstallationIDs {
|
for _, installationID := range theirInstallationIDs {
|
||||||
if !response.installationIDs[installationID] {
|
if !response.installationIDs[installationID] {
|
||||||
logger.Debug("no shared secret for installation", zap.String("installation-id", installationID))
|
|
||||||
return secret, false, nil
|
return secret, false, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -379,10 +379,8 @@ func (m *Messenger) handleSendContactCode() error {
|
||||||
|
|
||||||
// handleSharedSecrets process the negotiated secrets received from the encryption layer
|
// handleSharedSecrets process the negotiated secrets received from the encryption layer
|
||||||
func (m *Messenger) handleSharedSecrets(secrets []*sharedsecret.Secret) error {
|
func (m *Messenger) handleSharedSecrets(secrets []*sharedsecret.Secret) error {
|
||||||
logger := m.logger.With(zap.String("site", "handleSharedSecrets"))
|
|
||||||
var result []*transport.Filter
|
var result []*transport.Filter
|
||||||
for _, secret := range secrets {
|
for _, secret := range secrets {
|
||||||
logger.Debug("received shared secret", zap.Binary("identity", crypto.FromECDSAPub(secret.Identity)))
|
|
||||||
fSecret := types.NegotiatedSecret{
|
fSecret := types.NegotiatedSecret{
|
||||||
PublicKey: secret.Identity,
|
PublicKey: secret.Identity,
|
||||||
Key: secret.Key,
|
Key: secret.Key,
|
||||||
|
|
|
@ -950,6 +950,15 @@ func (s *MessengerSuite) TestReInvitedToGroupChat() {
|
||||||
s.Require().Len(response.Chats, 1)
|
s.Require().Len(response.Chats, 1)
|
||||||
s.Require().False(response.Chats[0].Active)
|
s.Require().False(response.Chats[0].Active)
|
||||||
|
|
||||||
|
// Retrieve messages so user is removed
|
||||||
|
_, err = WaitOnMessengerResponse(
|
||||||
|
s.m,
|
||||||
|
func(r *MessengerResponse) bool { return len(r.Chats) > 0 && len(r.Chats[0].Members) == 1 },
|
||||||
|
"leave group chat not received",
|
||||||
|
)
|
||||||
|
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
// And we get re-invited
|
// And we get re-invited
|
||||||
_, err = s.m.AddMembersToGroupChat(context.Background(), ourChat.ID, members)
|
_, err = s.m.AddMembersToGroupChat(context.Background(), ourChat.ID, members)
|
||||||
s.NoError(err)
|
s.NoError(err)
|
||||||
|
|
|
@ -818,11 +818,8 @@ func (c *Client) queryNotificationInfo(publicKey *ecdsa.PublicKey, force bool) e
|
||||||
// handleMessageSent is called every time a message is sent
|
// handleMessageSent is called every time a message is sent
|
||||||
func (c *Client) handleMessageSent(sentMessage *common.SentMessage) error {
|
func (c *Client) handleMessageSent(sentMessage *common.SentMessage) error {
|
||||||
|
|
||||||
c.config.Logger.Debug("sent messages", zap.Any("messageIDs", sentMessage.MessageIDs))
|
|
||||||
|
|
||||||
// Ignore if we are not sending notifications
|
// Ignore if we are not sending notifications
|
||||||
if !c.config.SendEnabled {
|
if !c.config.SendEnabled {
|
||||||
c.config.Logger.Debug("send not enabled, ignoring")
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue