From f8a7eb29b57211fad9e11653c4f12d08eb12c09d Mon Sep 17 00:00:00 2001 From: "Richard T. Carback III" <rick.carback@gmail.com> Date: Fri, 15 Jul 2022 22:41:00 +0000 Subject: [PATCH] Add check if we were initially loaded as a legacy system --- e2e/manager.go | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/e2e/manager.go b/e2e/manager.go index 6196a5dfb..00630b746 100644 --- a/e2e/manager.go +++ b/e2e/manager.go @@ -2,10 +2,10 @@ package e2e import ( "encoding/json" - jww "github.com/spf13/jwalterweatherman" - "strings" "time" + jww "github.com/spf13/jwalterweatherman" + "gitlab.com/xx_network/primitives/netTime" "github.com/pkg/errors" @@ -39,6 +39,7 @@ type manager struct { kv *versioned.KV } +const legacyE2EKey = "legacyE2ESystem" const e2eRekeyParamsKey = "e2eRekeyParams" const e2eRekeyParamsVer = 0 @@ -102,9 +103,12 @@ func LoadLegacy(kv *versioned.KV, net cmix.Client, myID *id.ID, // Check if values are already written. If they exist on disk/memory already, // this would be a case where LoadLegacy is most likely not the correct // code-path the caller should be following. - if _, err := kv.Get(e2eRekeyParamsKey, e2eRekeyParamsVer); err != nil && !strings.Contains(err.Error(), "object not found") { - return nil, errors.New("E2E rekey params are already on disk, " + - "LoadLegacy should not be called") + if _, err := kv.Get(e2eRekeyParamsKey, e2eRekeyParamsVer); err == nil { + if _, err = kv.Get(legacyE2EKey, e2eRekeyParamsVer); err != nil { + return nil, errors.New("E2E rekey params" + + " are already on disk, " + + "LoadLegacy should not be called") + } } // Store the rekey params to disk/memory @@ -113,6 +117,17 @@ func LoadLegacy(kv *versioned.KV, net cmix.Client, myID *id.ID, Timestamp: netTime.Now(), Data: rekeyParamsData, }) + if err != nil { + return nil, err + } + err = kv.Set(legacyE2EKey, e2eRekeyParamsVer, &versioned.Object{ + Version: e2eRekeyParamsVer, + Timestamp: netTime.Now(), + Data: []byte{1}, + }) + if err != nil { + return nil, err + } // Load the legacy data return loadE2E(kv, net, myID, grp, rng, events) -- GitLab