From 0f3f9a9f961c168b92d4b5a6ec9ce50895a2f9c8 Mon Sep 17 00:00:00 2001
From: Benjamin Wenger <ben@elixxir.ioo>
Date: Fri, 25 Sep 2020 11:17:54 -0700
Subject: [PATCH] fixed user generation, was creating e2e keys in wrong groups
 added the deffintion of message IDs

---
 api/user.go                          |  4 ++--
 interfaces/message/id.go             | 35 ++++++++++++++++++++++++++++
 interfaces/message/receiveMessage.go |  3 +++
 3 files changed, 40 insertions(+), 2 deletions(-)
 create mode 100644 interfaces/message/id.go

diff --git a/api/user.go b/api/user.go
index da54da2aa..45536132f 100644
--- a/api/user.go
+++ b/api/user.go
@@ -62,7 +62,7 @@ func createNewUser(rng csprng.Source, cmix, e2e *cyclic.Group) user.User {
 		RSA:              rsaKey,
 		Precanned:        false,
 		CmixDhPrivateKey: cmix.NewIntFromBytes(cMixKeyBytes),
-		E2eDhPrivateKey:  cmix.NewIntFromBytes(e2eKeyBytes),
+		E2eDhPrivateKey:  e2e.NewIntFromBytes(e2eKeyBytes),
 	}
 }
 
@@ -89,6 +89,6 @@ func createPrecannedUser(precannedID uint, rng csprng.Source, cmix, e2e *cyclic.
 		ID:              userID.DeepCopy(),
 		Salt:            salt,
 		Precanned:       false,
-		E2eDhPrivateKey: cmix.NewIntFromBytes(e2eKeyBytes),
+		E2eDhPrivateKey: e2e.NewIntFromBytes(e2eKeyBytes),
 	}
 }
diff --git a/interfaces/message/id.go b/interfaces/message/id.go
new file mode 100644
index 000000000..f848e8bcc
--- /dev/null
+++ b/interfaces/message/id.go
@@ -0,0 +1,35 @@
+package message
+
+import (
+	"encoding/binary"
+	"gitlab.com/elixxir/crypto/hash"
+	"gitlab.com/xx_network/primitives/id"
+	jww "github.com/spf13/jwalterweatherman"
+)
+
+const messageIDLen = 32
+
+type ID [messageIDLen]byte
+
+func NewID(sender, receiver *id.ID, connectionSalt []byte,
+	internalMessageID uint64) ID {
+	h, err := hash.NewCMixHash()
+	if err != nil {
+		jww.FATAL.Panicf("Failed to get hash for message ID creation")
+	}
+
+	h.Write(sender.Bytes())
+	h.Write(receiver.Bytes())
+
+	intMidBytes := make([]byte, 8)
+	binary.BigEndian.PutUint64(intMidBytes, internalMessageID)
+
+	h.Write(intMidBytes)
+	h.Write(connectionSalt)
+
+	midBytes := h.Sum(nil)
+
+	mid := ID{}
+	copy(mid[:], midBytes)
+	return mid
+}
diff --git a/interfaces/message/receiveMessage.go b/interfaces/message/receiveMessage.go
index d562e0528..8e6a5a70f 100644
--- a/interfaces/message/receiveMessage.go
+++ b/interfaces/message/receiveMessage.go
@@ -11,4 +11,7 @@ type Receive struct {
 	Sender      *id.ID
 	Timestamp   time.Time
 	Encryption  EncryptionType
+	Id          ID
 }
+
+
-- 
GitLab