From b910504ad89723bd4bef4a07260e51cf8fbd19ce Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Mon, 27 Jun 2022 17:49:25 +0000
Subject: [PATCH] General Cleanup

This fixes a few issues:
1. When logging in, try to load the store then init if it doesn't exist.
2. Fix receptionIdentity return on LoginLegacy returning Transmission, not Reception, elements
3. Call NewStateLegacy inside the LoginLegacy object, which would otherwise break compatibility with existing mobile client stores.
---
 xxdk/e2e.go | 33 ++++++++++++++++++++++++---------
 1 file changed, 24 insertions(+), 9 deletions(-)

diff --git a/xxdk/e2e.go b/xxdk/e2e.go
index ce139c294..3af7a071c 100644
--- a/xxdk/e2e.go
+++ b/xxdk/e2e.go
@@ -9,6 +9,8 @@ package xxdk
 import (
 	"encoding/binary"
 	"encoding/json"
+	"time"
+
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/auth"
@@ -21,7 +23,6 @@ import (
 	"gitlab.com/elixxir/ekv"
 	"gitlab.com/xx_network/crypto/xx"
 	"gitlab.com/xx_network/primitives/id"
-	"time"
 )
 
 // E2e object bundles a ReceptionIdentity with a Cmix
@@ -70,18 +71,19 @@ func LoginLegacy(client *Cmix, callbacks auth.Callbacks) (m *E2e, err error) {
 			"the e2e processies")
 	}
 
-	m.auth, err = auth.NewState(client.GetStorage().GetKV(), client.GetCmix(),
-		m.e2e, client.GetRng(), client.GetEventReporter(),
-		auth.GetDefaultParams(), callbacks, m.backup.TriggerBackup)
+	m.auth, err = auth.NewStateLegacy(client.GetStorage().GetKV(),
+		client.GetCmix(), m.e2e, client.GetRng(),
+		client.GetEventReporter(), auth.GetDefaultParams(),
+		callbacks, m.backup.TriggerBackup)
 	if err != nil {
 		return nil, err
 	}
 
 	u := m.Cmix.GetUser()
 	m.e2eIdentity = ReceptionIdentity{
-		ID:            u.TransmissionID,
-		RSAPrivatePem: u.TransmissionRSA,
-		Salt:          u.TransmissionSalt,
+		ID:            u.ReceptionID,
+		RSAPrivatePem: u.ReceptionRSA,
+		Salt:          u.ReceptionSalt,
 		DHKeyPrivate:  u.E2eDhPrivateKey,
 	}
 
@@ -218,8 +220,21 @@ func login(client *Cmix, callbacks auth.Callbacks,
 		client.GetCmix(), identity.ID, e2eGrp, client.GetRng(),
 		client.GetEventReporter())
 	if err != nil {
-		return nil, errors.WithMessage(err, "Failed to load a "+
-			"newly created e2e store")
+		jww.WARN.Printf("Cannot load e2e store (will init instead): %s",
+			err.Error())
+		//initialize the e2e storage
+		err = e2e.Init(kv, identity.ID, identity.DHKeyPrivate, e2eGrp,
+			rekey.GetDefaultEphemeralParams())
+		if err != nil {
+			return nil, err
+		}
+		m.e2e, err = e2e.Load(kv,
+			client.GetCmix(), identity.ID, e2eGrp, client.GetRng(),
+			client.GetEventReporter())
+		if err != nil {
+			return nil, errors.WithMessage(err, "Failed to load a "+
+				"newly created e2e store")
+		}
 	}
 
 	err = client.AddService(m.e2e.StartProcesses)
-- 
GitLab