From 1c55b1840321ff53d2899aa1f14e619ca561ead2 Mon Sep 17 00:00:00 2001 From: Jake Taylor <jake@elixxir.io> Date: Fri, 1 Jul 2022 14:17:15 -0500 Subject: [PATCH] load/init ee2e for login --- xxdk/e2e.go | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/xxdk/e2e.go b/xxdk/e2e.go index 650428be9..9900b08d4 100644 --- a/xxdk/e2e.go +++ b/xxdk/e2e.go @@ -72,7 +72,7 @@ func LoginLegacy(client *Cmix, callbacks AuthCallbacks) (m *E2e, err error) { backup: &Container{}, } - m.e2e, err = LoadOrInitE2e(client) + m.e2e, err = loadOrInitE2eLegacy(client) if err != nil { return nil, err } @@ -222,9 +222,7 @@ func login(client *Cmix, callbacks AuthCallbacks, } //load the new e2e storage - m.e2e, err = e2e.Load(kv, - client.GetCmix(), identity.ID, e2eGrp, client.GetRng(), - client.GetEventReporter()) + m.e2e, err = loadOrInitE2e(client, dhPrivKey) if err != nil { return nil, errors.WithMessage(err, "Failed to load a "+ "newly created e2e store") @@ -246,10 +244,40 @@ func login(client *Cmix, callbacks AuthCallbacks, return m, err } -// LoadOrInitE2e loads the e2e handler or makes a new one, generating a new +// loadOrInitE2e loads the modern e2e handler or makes a new one, +// generating a new e2e private key +func loadOrInitE2e(client *Cmix, privKey *cyclic.Int) (e2e.Handler, error) { + usr := client.GetStorage().PortableUserInfo() + e2eGrp := client.GetStorage().GetE2EGroup() + kv := client.GetStorage().GetKV() + + e2eHandler, err := e2e.Load(kv, + client.GetCmix(), usr.ReceptionID, e2eGrp, client.GetRng(), + client.GetEventReporter()) + if err != nil { + //initialize the e2e storage + err = e2e.Init(kv, usr.ReceptionID, privKey, e2eGrp, + rekey.GetDefaultParams()) + if err != nil { + return nil, err + } + + //load the new e2e storage + e2eHandler, err = e2e.Load(kv, + client.GetCmix(), usr.ReceptionID, e2eGrp, client.GetRng(), + client.GetEventReporter()) + if err != nil { + return nil, errors.WithMessage(err, "Failed to load a "+ + "newly created e2e store") + } + } + return e2eHandler, nil +} + +// loadOrInitE2eLegacy loads the e2e handler or makes a new one, generating a new // e2e private key. It attempts to load via a legacy construction, then tries // to load the modern one, creating a new modern ID if neither can be found -func LoadOrInitE2e(client *Cmix) (e2e.Handler, error) { +func loadOrInitE2eLegacy(client *Cmix) (e2e.Handler, error) { usr := client.GetStorage().PortableUserInfo() e2eGrp := client.GetStorage().GetE2EGroup() kv := client.GetStorage().GetKV() -- GitLab