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