From 4a444a73b6417a0c492dcfd6575cbc52b9c4b8f1 Mon Sep 17 00:00:00 2001
From: joshemb <josh@elixxir.io>
Date: Fri, 26 Aug 2022 12:31:46 -0700
Subject: [PATCH] Move send report to crypto

---
 auth/utils_test.go                 |  5 +++--
 cmd/root.go                        |  4 ++--
 connect/connect.go                 |  7 +++---
 connect/utils_test.go              |  5 +++--
 e2e/critical.go                    |  3 ++-
 e2e/interface.go                   |  3 ++-
 e2e/manager.go                     |  3 ++-
 e2e/rekey/exchange.go              |  2 +-
 e2e/rekey/utils_test.go            |  6 ++---
 e2e/sendE2E.go                     | 35 ++++++++----------------------
 fileTransfer/connect/utils_test.go |  5 +++--
 fileTransfer/connect/wrapper.go    |  3 ++-
 fileTransfer/e2e/utils_test.go     |  5 +++--
 fileTransfer/e2e/wrapper.go        |  3 ++-
 go.mod                             |  2 +-
 go.sum                             |  2 ++
 groupChat/e2eManager_test.go       |  9 ++++----
 groupChat/interface.go             |  3 ++-
 ud/mockE2e_test.go                 |  3 ++-
 19 files changed, 53 insertions(+), 55 deletions(-)

diff --git a/auth/utils_test.go b/auth/utils_test.go
index b2c11bb4c..4136860e3 100644
--- a/auth/utils_test.go
+++ b/auth/utils_test.go
@@ -13,6 +13,7 @@ import (
 	"gitlab.com/elixxir/client/stoppable"
 	"gitlab.com/elixxir/comms/mixmessages"
 	"gitlab.com/elixxir/crypto/cyclic"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/elixxir/primitives/states"
 	"gitlab.com/xx_network/comms/connect"
 	"gitlab.com/xx_network/crypto/large"
@@ -60,8 +61,8 @@ func (m mockE2eHandler) StartProcesses() (stoppable.Stoppable, error) {
 }
 
 func (m mockE2eHandler) SendE2E(mt catalog.MessageType, recipient *id.ID,
-	payload []byte, params e2e.Params) (e2e.SendReport, error) {
-	return e2e.SendReport{}, nil
+	payload []byte, params e2e.Params) (cryptoE2e.SendReport, error) {
+	return cryptoE2e.SendReport{}, nil
 }
 
 func (m mockE2eHandler) RegisterListener(senderID *id.ID,
diff --git a/cmd/root.go b/cmd/root.go
index 56074b3d6..1a24d7dea 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -14,7 +14,7 @@ import (
 	"encoding/hex"
 	"encoding/json"
 	"fmt"
-	"gitlab.com/elixxir/client/e2e"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"io/ioutil"
 	"log"
 	"os"
@@ -289,7 +289,7 @@ var rootCmd = &cobra.Command{
 								e2eParams.Base)
 						} else {
 							e2eParams.Base.DebugTag = "cmd.E2E"
-							var sendReport e2e.SendReport
+							var sendReport cryptoE2e.SendReport
 							sendReport, err = user.GetE2E().SendE2E(mt,
 								recipient, payload, e2eParams.Base)
 							roundIDs = sendReport.RoundList
diff --git a/connect/connect.go b/connect/connect.go
index 83896dbc3..5cc9f60a2 100644
--- a/connect/connect.go
+++ b/connect/connect.go
@@ -7,6 +7,7 @@
 package connect
 
 import (
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"io"
 	"sync/atomic"
 	"time"
@@ -41,7 +42,7 @@ type Connection interface {
 	// SendE2E is a wrapper for sending specifically to the Connection's
 	// partner.Manager
 	SendE2E(mt catalog.MessageType, payload []byte, params clientE2e.Params) (
-		clientE2e.SendReport, error)
+		cryptoE2e.SendReport, error)
 
 	// RegisterListener is used for E2E reception
 	// and allows for reading data sent from the partner.Manager
@@ -219,9 +220,9 @@ func (h *handler) GetPartner() partner.Manager {
 // SendE2E is a wrapper for sending specifically to the Connection's
 // partner.Manager.
 func (h *handler) SendE2E(mt catalog.MessageType, payload []byte,
-	params clientE2e.Params) (clientE2e.SendReport, error) {
+	params clientE2e.Params) (cryptoE2e.SendReport, error) {
 	if h.isClosed() {
-		return clientE2e.SendReport{}, alreadyClosedErr
+		return cryptoE2e.SendReport{}, alreadyClosedErr
 	}
 
 	h.updateLastUse(netTime.Now())
diff --git a/connect/utils_test.go b/connect/utils_test.go
index f94541927..7fc60f539 100644
--- a/connect/utils_test.go
+++ b/connect/utils_test.go
@@ -16,6 +16,7 @@ import (
 	"gitlab.com/elixxir/comms/network"
 	"gitlab.com/elixxir/crypto/contact"
 	"gitlab.com/elixxir/crypto/cyclic"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/elixxir/primitives/format"
 	"gitlab.com/xx_network/comms/connect"
 	"gitlab.com/xx_network/crypto/large"
@@ -114,7 +115,7 @@ func (m *mockConnection) Close() error {
 func (m *mockConnection) GetPartner() partner.Manager { return m.partner }
 
 func (m *mockConnection) SendE2E(
-	mt catalog.MessageType, payload []byte, _ e2e.Params) (e2e.SendReport, error) {
+	mt catalog.MessageType, payload []byte, _ e2e.Params) (cryptoE2e.SendReport, error) {
 	m.payloadChan <- payload
 	m.listener.Hear(receive.Message{
 		MessageType: mt,
@@ -122,7 +123,7 @@ func (m *mockConnection) SendE2E(
 		Sender:      m.partner.myID,
 		RecipientID: m.partner.partnerId,
 	})
-	return e2e.SendReport{}, nil
+	return cryptoE2e.SendReport{}, nil
 }
 
 func (m *mockConnection) RegisterListener(
diff --git a/e2e/critical.go b/e2e/critical.go
index 95c4af3fb..cc5a1ee92 100644
--- a/e2e/critical.go
+++ b/e2e/critical.go
@@ -1,6 +1,7 @@
 package e2e
 
 import (
+	"gitlab.com/elixxir/crypto/e2e"
 	"time"
 
 	jww "github.com/spf13/jwalterweatherman"
@@ -28,7 +29,7 @@ type roundEventRegistrar interface {
 // anonymous function to include the structures from manager that critical is
 // not aware of.
 type criticalSender func(mt catalog.MessageType, recipient *id.ID,
-	payload []byte, params Params) (SendReport, error)
+	payload []byte, params Params) (e2e.SendReport, error)
 
 // critical is a structure that allows the auto resending of messages that must
 // be received.
diff --git a/e2e/interface.go b/e2e/interface.go
index 138dbf9eb..db4d4a590 100644
--- a/e2e/interface.go
+++ b/e2e/interface.go
@@ -2,6 +2,7 @@ package e2e
 
 import (
 	"gitlab.com/elixxir/client/cmix/rounds"
+	"gitlab.com/elixxir/crypto/e2e"
 	"time"
 
 	"github.com/cloudflare/circl/dh/sidh"
@@ -34,7 +35,7 @@ type Handler interface {
 	// Will return an error if the network is not healthy or in
 	// the event of a failed send
 	SendE2E(mt catalog.MessageType, recipient *id.ID, payload []byte,
-		params Params) (SendReport, error)
+		params Params) (e2e.SendReport, error)
 
 	/* === Reception ==================================================== */
 
diff --git a/e2e/manager.go b/e2e/manager.go
index a426e9ead..9fc1b4b3d 100644
--- a/e2e/manager.go
+++ b/e2e/manager.go
@@ -5,6 +5,7 @@ import (
 	"encoding/base64"
 	"encoding/json"
 	jww "github.com/spf13/jwalterweatherman"
+	"gitlab.com/elixxir/crypto/e2e"
 	"sync"
 
 	"gitlab.com/xx_network/primitives/netTime"
@@ -211,7 +212,7 @@ func (m *manager) StartProcesses() (stoppable.Stoppable, error) {
 
 	rekeySendFunc := func(mt catalog.MessageType,
 		recipient *id.ID, payload []byte,
-		cmixParams cmix.CMIXParams) (SendReport, error) {
+		cmixParams cmix.CMIXParams) (e2e.SendReport, error) {
 		// FIXME: we should have access to the e2e params here...
 		par := GetDefaultParams()
 		par.CMIXParams = cmixParams
diff --git a/e2e/rekey/exchange.go b/e2e/rekey/exchange.go
index 4ffbad5ca..cd5f553ef 100644
--- a/e2e/rekey/exchange.go
+++ b/e2e/rekey/exchange.go
@@ -10,11 +10,11 @@ package rekey
 import (
 	"gitlab.com/elixxir/client/catalog"
 	"gitlab.com/elixxir/client/cmix"
-	"gitlab.com/elixxir/client/e2e"
 	"gitlab.com/elixxir/client/e2e/ratchet"
 	"gitlab.com/elixxir/client/e2e/receive"
 	"gitlab.com/elixxir/client/stoppable"
 	"gitlab.com/elixxir/crypto/cyclic"
+	"gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/xx_network/primitives/id"
 )
 
diff --git a/e2e/rekey/utils_test.go b/e2e/rekey/utils_test.go
index dac9236a7..4f040f4d7 100644
--- a/e2e/rekey/utils_test.go
+++ b/e2e/rekey/utils_test.go
@@ -8,7 +8,7 @@
 package rekey
 
 import (
-	e2e2 "gitlab.com/elixxir/client/e2e"
+	"gitlab.com/elixxir/crypto/e2e"
 	"math/rand"
 	"testing"
 	"time"
@@ -74,7 +74,7 @@ func genSidhKeys() (*sidh.PrivateKey, *sidh.PublicKey, *sidh.PrivateKey, *sidh.P
 
 func testSendE2E(mt catalog.MessageType, recipient *id.ID,
 	payload []byte, cmixParams cmix.CMIXParams) (
-	e2e2.SendReport, error) {
+	e2e.SendReport, error) {
 	rounds := []id.Round{id.Round(0), id.Round(1), id.Round(2)}
 	alicePartner, err := r.GetPartner(aliceID)
 	if err != nil {
@@ -110,7 +110,7 @@ func testSendE2E(mt catalog.MessageType, recipient *id.ID,
 
 	bobSwitchboard.Speak(confirmMessage)
 
-	return e2e2.SendReport{
+	return e2e.SendReport{
 		RoundList: rounds,
 	}, nil
 }
diff --git a/e2e/sendE2E.go b/e2e/sendE2E.go
index fbe407013..1ff21404d 100644
--- a/e2e/sendE2E.go
+++ b/e2e/sendE2E.go
@@ -19,28 +19,11 @@ import (
 	"gitlab.com/xx_network/primitives/netTime"
 )
 
-type SendReport struct {
-	// RoundList is the list of rounds which the message payload
-	// is sent.
-	RoundList []id.Round
-
-	// MessageId is the ID of the message sent.
-	MessageId e2e.MessageID
-
-	// SentTime is the time in which the message was sent.
-	// More specifically it is when SendE2e is called.
-	SentTime time.Time
-
-	// KeyResidue is the residue of the key used for the first partition of the
-	// message payload. The residue is a hash of the key and a salt.
-	KeyResidue e2e.KeyResidue
-}
-
 func (m *manager) SendE2E(mt catalog.MessageType, recipient *id.ID,
-	payload []byte, params Params) (SendReport, error) {
+	payload []byte, params Params) (e2e.SendReport, error) {
 
 	if !m.net.IsHealthy() {
-		return SendReport{},
+		return e2e.SendReport{},
 			errors.New("cannot sendE2E when network is not healthy")
 	}
 
@@ -63,7 +46,7 @@ func (m *manager) SendE2E(mt catalog.MessageType, recipient *id.ID,
 
 // sendE2eFn contains a prepared sendE2E operation and sends an E2E message when
 // called, returning the results of the send.
-type sendE2eFn func() (SendReport, error)
+type sendE2eFn func() (e2e.SendReport, error)
 
 // prepareSendE2E makes a prepared function that does the e2e send.
 // This is so that when doing deletePartner we can prepare the send before
@@ -108,7 +91,7 @@ func (m *manager) prepareSendE2E(mt catalog.MessageType, recipient *id.ID,
 		if mt != catalog.KeyExchangeTrigger {
 			// Check if any rekeys need to happen and trigger them
 			rekeySendFunc := func(mt catalog.MessageType, recipient *id.ID,
-				payload []byte, cmixParams cmix.CMIXParams) (SendReport, error) {
+				payload []byte, cmixParams cmix.CMIXParams) (e2e.SendReport, error) {
 				par := params
 				par.CMIXParams = cmixParams
 				return m.SendE2E(mt, recipient, payload, par)
@@ -171,7 +154,7 @@ func (m *manager) prepareSendE2E(mt catalog.MessageType, recipient *id.ID,
 		sendFuncs = append(sendFuncs, thisSendFunc)
 	}
 
-	sendE2E = func() (SendReport, error) {
+	sendE2E = func() (e2e.SendReport, error) {
 		for i := range sendFuncs {
 			sendFuncs[i]()
 		}
@@ -182,7 +165,7 @@ func (m *manager) prepareSendE2E(mt catalog.MessageType, recipient *id.ID,
 		if numFail > 0 {
 			jww.INFO.Printf("Failed to E2E send %d/%d to %s",
 				numFail, len(partitions), recipient)
-			return SendReport{}, errors.Errorf(
+			return e2e.SendReport{}, errors.Errorf(
 				"Failed to E2E send %v/%v sub payloads: %s",
 				numFail, len(partitions), errRtn)
 		} else {
@@ -193,7 +176,7 @@ func (m *manager) prepareSendE2E(mt catalog.MessageType, recipient *id.ID,
 		jww.INFO.Printf("Successful E2E Send of %d messages to %s with msgID %s",
 			len(partitions), recipient, msgID)
 
-		return SendReport{
+		return e2e.SendReport{
 			RoundList:  roundIds,
 			MessageId:  msgID,
 			SentTime:   ts,
@@ -204,10 +187,10 @@ func (m *manager) prepareSendE2E(mt catalog.MessageType, recipient *id.ID,
 }
 
 func (m *manager) sendE2E(mt catalog.MessageType, recipient *id.ID,
-	payload []byte, params Params) (SendReport, error) {
+	payload []byte, params Params) (e2e.SendReport, error) {
 	sendFunc, err := m.prepareSendE2E(mt, recipient, payload, params)
 	if err != nil {
-		return SendReport{}, err
+		return e2e.SendReport{}, err
 	}
 	return sendFunc()
 }
diff --git a/fileTransfer/connect/utils_test.go b/fileTransfer/connect/utils_test.go
index 927a70efb..400b5288f 100644
--- a/fileTransfer/connect/utils_test.go
+++ b/fileTransfer/connect/utils_test.go
@@ -26,6 +26,7 @@ import (
 	"gitlab.com/elixxir/client/xxdk"
 	"gitlab.com/elixxir/comms/network"
 	"gitlab.com/elixxir/crypto/cyclic"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/elixxir/ekv"
 	"gitlab.com/elixxir/primitives/format"
@@ -266,7 +267,7 @@ func (m *mockConnection) GetPartner() partner.Manager {
 
 // SendE2E adds the message to the e2e handler map.
 func (m *mockConnection) SendE2E(mt catalog.MessageType, payload []byte,
-	_ e2e.Params) (e2e.SendReport, error) {
+	_ e2e.Params) (cryptoE2e.SendReport, error) {
 	m.handler.Lock()
 	defer m.handler.Unlock()
 
@@ -276,7 +277,7 @@ func (m *mockConnection) SendE2E(mt catalog.MessageType, payload []byte,
 		Sender:      m.myID,
 	})
 
-	return e2e.SendReport{RoundList: []id.Round{42}}, nil
+	return cryptoE2e.SendReport{RoundList: []id.Round{42}}, nil
 }
 
 func (m *mockConnection) RegisterListener(mt catalog.MessageType,
diff --git a/fileTransfer/connect/wrapper.go b/fileTransfer/connect/wrapper.go
index 2b0163aa7..0d826daec 100644
--- a/fileTransfer/connect/wrapper.go
+++ b/fileTransfer/connect/wrapper.go
@@ -13,6 +13,7 @@ import (
 	"gitlab.com/elixxir/client/e2e/ratchet/partner"
 	"gitlab.com/elixxir/client/e2e/receive"
 	ft "gitlab.com/elixxir/client/fileTransfer"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	ftCrypto "gitlab.com/elixxir/crypto/fileTransfer"
 	"time"
 )
@@ -39,7 +40,7 @@ type Wrapper struct {
 type connection interface {
 	GetPartner() partner.Manager
 	SendE2E(mt catalog.MessageType, payload []byte, params e2e.Params) (
-		e2e.SendReport, error)
+		cryptoE2e.SendReport, error)
 	RegisterListener(messageType catalog.MessageType,
 		newListener receive.Listener) (receive.ListenerID, error)
 }
diff --git a/fileTransfer/e2e/utils_test.go b/fileTransfer/e2e/utils_test.go
index 34265f35e..a185a84aa 100644
--- a/fileTransfer/e2e/utils_test.go
+++ b/fileTransfer/e2e/utils_test.go
@@ -28,6 +28,7 @@ import (
 	"gitlab.com/elixxir/client/xxdk"
 	"gitlab.com/elixxir/comms/network"
 	"gitlab.com/elixxir/crypto/cyclic"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/elixxir/ekv"
 	"gitlab.com/elixxir/primitives/format"
@@ -257,7 +258,7 @@ func (m *mockE2e) StartProcesses() (stoppable.Stoppable, error) { panic("impleme
 
 // SendE2E adds the message to the e2e handler map.
 func (m *mockE2e) SendE2E(mt catalog.MessageType, recipient *id.ID,
-	payload []byte, _ e2e.Params) (e2e.SendReport, error) {
+	payload []byte, _ e2e.Params) (cryptoE2e.SendReport, error) {
 
 	m.handler.listeners[mt].Hear(receive.Message{
 		MessageType: mt,
@@ -266,7 +267,7 @@ func (m *mockE2e) SendE2E(mt catalog.MessageType, recipient *id.ID,
 		RecipientID: recipient,
 	})
 
-	return e2e.SendReport{RoundList: []id.Round{42}}, nil
+	return cryptoE2e.SendReport{RoundList: []id.Round{42}}, nil
 }
 
 func (m *mockE2e) RegisterListener(_ *id.ID, mt catalog.MessageType,
diff --git a/fileTransfer/e2e/wrapper.go b/fileTransfer/e2e/wrapper.go
index ffb90b2b4..de212b0ca 100644
--- a/fileTransfer/e2e/wrapper.go
+++ b/fileTransfer/e2e/wrapper.go
@@ -12,6 +12,7 @@ import (
 	"gitlab.com/elixxir/client/e2e"
 	"gitlab.com/elixxir/client/e2e/receive"
 	ft "gitlab.com/elixxir/client/fileTransfer"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	ftCrypto "gitlab.com/elixxir/crypto/fileTransfer"
 	"gitlab.com/xx_network/primitives/id"
 	"time"
@@ -38,7 +39,7 @@ type Wrapper struct {
 // for easier testing.
 type e2eHandler interface {
 	SendE2E(mt catalog.MessageType, recipient *id.ID, payload []byte,
-		params e2e.Params) (e2e.SendReport, error)
+		params e2e.Params) (cryptoE2e.SendReport, error)
 	RegisterListener(senderID *id.ID, messageType catalog.MessageType,
 		newListener receive.Listener) receive.ListenerID
 }
diff --git a/go.mod b/go.mod
index f8abc624c..23b51ee34 100644
--- a/go.mod
+++ b/go.mod
@@ -13,7 +13,7 @@ require (
 	github.com/spf13/viper v1.12.0
 	gitlab.com/elixxir/bloomfilter v0.0.0-20211222005329-7d931ceead6f
 	gitlab.com/elixxir/comms v0.0.4-0.20220603231314-e47e4af13326
-	gitlab.com/elixxir/crypto v0.0.7-0.20220823235814-7f7036f95acb
+	gitlab.com/elixxir/crypto v0.0.7-0.20220826192201-c00efec3c556
 	gitlab.com/elixxir/ekv v0.1.7
 	gitlab.com/elixxir/primitives v0.0.3-0.20220606195757-40f7a589347f
 	gitlab.com/xx_network/comms v0.0.4-0.20220630163702-f3d372ef6acd
diff --git a/go.sum b/go.sum
index 9925d78e0..e67a58bdc 100644
--- a/go.sum
+++ b/go.sum
@@ -446,6 +446,8 @@ gitlab.com/elixxir/crypto v0.0.7-0.20220822180822-5e1b688a9500 h1:KI+7GoG2/9x/J5
 gitlab.com/elixxir/crypto v0.0.7-0.20220822180822-5e1b688a9500/go.mod h1:0gH41Kb/a9Akdv+2+vMJVdx+REVwR8CZXTr2+BrgeeA=
 gitlab.com/elixxir/crypto v0.0.7-0.20220823235814-7f7036f95acb h1:J5/yaBi7ZucSLIVHUanxgV6FKT/yDzF5I4TQYZsQqIQ=
 gitlab.com/elixxir/crypto v0.0.7-0.20220823235814-7f7036f95acb/go.mod h1:0gH41Kb/a9Akdv+2+vMJVdx+REVwR8CZXTr2+BrgeeA=
+gitlab.com/elixxir/crypto v0.0.7-0.20220826192201-c00efec3c556 h1:8ExJNUdf8JvGpfQH5Ch+Zk+sc9YJ2pLExO/ZKnGo11w=
+gitlab.com/elixxir/crypto v0.0.7-0.20220826192201-c00efec3c556/go.mod h1:0gH41Kb/a9Akdv+2+vMJVdx+REVwR8CZXTr2+BrgeeA=
 gitlab.com/elixxir/ekv v0.1.7 h1:OW2z+N4QCqqMFzouAwFTWWMKz0Y/PDhyYReN7gQ5NiQ=
 gitlab.com/elixxir/ekv v0.1.7/go.mod h1:e6WPUt97taFZe5PFLPb1Dupk7tqmDCTQu1kkstqJvw4=
 gitlab.com/elixxir/primitives v0.0.0-20200731184040-494269b53b4d/go.mod h1:OQgUZq7SjnE0b+8+iIAT2eqQF+2IFHn73tOo+aV11mg=
diff --git a/groupChat/e2eManager_test.go b/groupChat/e2eManager_test.go
index 19775d9f9..1c4a777d1 100644
--- a/groupChat/e2eManager_test.go
+++ b/groupChat/e2eManager_test.go
@@ -11,6 +11,7 @@ import (
 	"gitlab.com/elixxir/client/e2e/receive"
 	"gitlab.com/elixxir/client/stoppable"
 	"gitlab.com/elixxir/crypto/cyclic"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/xx_network/primitives/id"
 	"sync"
 	"testing"
@@ -64,15 +65,15 @@ func (tnm *testE2eManager) GetE2eMsg(i int) testE2eMessage {
 }
 
 func (tnm *testE2eManager) SendE2E(_ catalog.MessageType, recipient *id.ID,
-	payload []byte, _ clientE2E.Params) (clientE2E.SendReport, error) {
+	payload []byte, _ clientE2E.Params) (cryptoE2e.SendReport, error) {
 	tnm.Lock()
 	defer tnm.Unlock()
 
 	tnm.errSkip++
 	if tnm.sendErr == 1 {
-		return clientE2E.SendReport{}, errors.New("SendE2E error")
+		return cryptoE2e.SendReport{}, errors.New("SendE2E error")
 	} else if tnm.sendErr == 2 && tnm.errSkip%2 == 0 {
-		return clientE2E.SendReport{}, errors.New("SendE2E error")
+		return cryptoE2e.SendReport{}, errors.New("SendE2E error")
 	}
 
 	tnm.e2eMessages = append(tnm.e2eMessages, testE2eMessage{
@@ -80,7 +81,7 @@ func (tnm *testE2eManager) SendE2E(_ catalog.MessageType, recipient *id.ID,
 		Payload:   payload,
 	})
 
-	return clientE2E.SendReport{RoundList: []id.Round{0, 1, 2, 3}}, nil
+	return cryptoE2e.SendReport{RoundList: []id.Round{0, 1, 2, 3}}, nil
 }
 
 func (*testE2eManager) RegisterListener(*id.ID, catalog.MessageType, receive.Listener) receive.ListenerID {
diff --git a/groupChat/interface.go b/groupChat/interface.go
index bf0469ccd..d670a565c 100644
--- a/groupChat/interface.go
+++ b/groupChat/interface.go
@@ -32,6 +32,7 @@ import (
 	"gitlab.com/elixxir/client/storage"
 	"gitlab.com/elixxir/client/xxdk"
 	"gitlab.com/elixxir/crypto/cyclic"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/elixxir/crypto/group"
 	"gitlab.com/xx_network/primitives/id"
@@ -125,7 +126,7 @@ type groupCmix interface {
 // needed by GroupChat
 type groupE2eHandler interface {
 	SendE2E(mt catalog.MessageType, recipient *id.ID, payload []byte,
-		params e2e.Params) (e2e.SendReport, error)
+		params e2e.Params) (cryptoE2e.SendReport, error)
 	RegisterListener(senderID *id.ID, messageType catalog.MessageType,
 		newListener receive.Listener) receive.ListenerID
 	AddService(tag string, processor message.Processor) error
diff --git a/ud/mockE2e_test.go b/ud/mockE2e_test.go
index 86a880401..bcdf30e75 100644
--- a/ud/mockE2e_test.go
+++ b/ud/mockE2e_test.go
@@ -15,6 +15,7 @@ import (
 	"gitlab.com/elixxir/client/storage/versioned"
 	"gitlab.com/elixxir/client/xxdk"
 	"gitlab.com/elixxir/crypto/cyclic"
+	cryptoE2e "gitlab.com/elixxir/crypto/e2e"
 	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/xx_network/crypto/csprng"
 	"gitlab.com/xx_network/crypto/signature/rsa"
@@ -108,7 +109,7 @@ func (m mockE2eHandler) StartProcesses() (stoppable.Stoppable, error) {
 	panic("implement me")
 }
 
-func (m mockE2eHandler) SendE2E(mt catalog.MessageType, recipient *id.ID, payload []byte, params e2e.Params) (e2e.SendReport, error) {
+func (m mockE2eHandler) SendE2E(mt catalog.MessageType, recipient *id.ID, payload []byte, params e2e.Params) (cryptoE2e.SendReport, error) {
 	//TODO implement me
 	panic("implement me")
 }
-- 
GitLab