diff --git a/network/message/garbled.go b/network/message/garbled.go index 537fedc042014ee8e2d686c2c978f00020e22b2f..d03fcf7cf7974e47bb2fec05f9299ebc231b8717 100644 --- a/network/message/garbled.go +++ b/network/message/garbled.go @@ -8,10 +8,12 @@ package message import ( + "encoding/base64" "fmt" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/interfaces/message" "gitlab.com/elixxir/client/stoppable" + "gitlab.com/elixxir/crypto/fingerprint" "gitlab.com/elixxir/primitives/format" "gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id/ephemeral" @@ -45,6 +47,7 @@ func (m *Manager) processGarbledMessages(stop *stoppable.Single) { stop.ToStopped() return case <-m.triggerGarbled: + jww.INFO.Printf("[GARBLE] Checking Garbled messages") m.handleGarbledMessages() } } @@ -56,11 +59,16 @@ func (m *Manager) handleGarbledMessages() { e2eKv := m.Session.E2e() var failedMsgs []format.Message //try to decrypt every garbled message, excising those who's counts are too high + i:=0 for grbldMsg, count, timestamp, has := garbledMsgs.Next(); has; grbldMsg, count, timestamp, has = garbledMsgs.Next() { //if it exists, check against all in the list modifiedContents := append([]byte{0}, grbldMsg.GetContents()...) - identity := m.Session.GetUser().GetContact().ID - _, forMe, _ := m.Session.GetEdge().Check(identity, grbldMsg.GetIdentityFP(), modifiedContents) + identity := m.Session.GetUser().ReceptionID + hasID, forMe, _ := m.Session.GetEdge().Check(identity, grbldMsg.GetIdentityFP(), modifiedContents) + jww.INFO.Printf("[GARBLE] Msg %d -- hasID: %t, forMe: %t, identity: %s, " + + "fp: %s, contentsHash: %s", i, hasID, forMe, identity, + base64.StdEncoding.EncodeToString(grbldMsg.GetIdentityFP()), + base64.StdEncoding.EncodeToString(fingerprint.GetMessageHash(modifiedContents))) if forMe { fingerprint := grbldMsg.GetKeyFP() // Check if the key is there, process it if it is @@ -121,6 +129,7 @@ func (m *Manager) handleGarbledMessages() { m.Session.GetGarbledMessages().Add(grbldMsg) m.Switchboard.Speak(raw) } + i++ } // fail the message if any part of the decryption fails, diff --git a/network/message/sendCmixUtils.go b/network/message/sendCmixUtils.go index b39acd4373a3b0392cd22cd2847cb1309519c745..95c79b0edab29b5362dea99c17e01821fc5c209a 100644 --- a/network/message/sendCmixUtils.go +++ b/network/message/sendCmixUtils.go @@ -8,6 +8,7 @@ package message import ( + "encoding/base64" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/interfaces/message" @@ -159,7 +160,8 @@ func buildSlotMessage(msg format.Message, recipient *id.ID, target *id.ID, msg.SetIdentityFP(ifp) - jww.INFO.Printf("Sending to %s with preimage %v, ifp: %v", recipient, preimage, ifp) + jww.INFO.Printf("Sending to %s with preimage %v, ifp: %v, messageHash: %s", recipient, preimage, + ifp, base64.StdEncoding.EncodeToString(append([]byte{0}, msg.GetContents()...))) // Encrypt the message salt := make([]byte, 32)