diff --git a/ud/addFact.go b/ud/addFact.go index c107636c365bfeedd449e67c9ebab426365551fd..3cb960518d585c2270adb3e20586e89ff9d55c37 100644 --- a/ud/addFact.go +++ b/ud/addFact.go @@ -31,7 +31,7 @@ func (m *Manager) addFact(inFact fact.Fact, myId *id.ID, aFC addFactComms) (string, error) { // get UD host - udHost, err := m.getOrAddUdHost() + udHost, err := m.getHost() if err != nil { return "", err } diff --git a/ud/confirmFact.go b/ud/confirmFact.go index fb81b7a9ee78e373fb54aaa6504d22c4eb1fa35b..7ad5ddcc71e4de3fd24652d4002f2317e5685277 100644 --- a/ud/confirmFact.go +++ b/ud/confirmFact.go @@ -20,7 +20,7 @@ func (m *Manager) ConfirmFact(confirmationID, code string) error { // confirmFact is a helper function for ConfirmFact. func (m *Manager) confirmFact(confirmationID, code string, comm confirmFactComm) error { // get UD host - udHost, err := m.getOrAddUdHost() + udHost, err := m.getHost() if err != nil { return err } diff --git a/ud/manager.go b/ud/manager.go index 1b0ee3578d6e69abe86f2a1347cddebda27f118b..245670b0b7ecad208c0523fe4c330d92f55a47db 100644 --- a/ud/manager.go +++ b/ud/manager.go @@ -1,10 +1,6 @@ package ud import ( - "gitlab.com/elixxir/crypto/fastRNG" - "sync" - "time" - "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/event" @@ -12,9 +8,10 @@ import ( store "gitlab.com/elixxir/client/ud/store" "gitlab.com/elixxir/client/xxdk" "gitlab.com/elixxir/crypto/contact" + "gitlab.com/elixxir/crypto/fastRNG" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/comms/connect" - "gitlab.com/xx_network/primitives/id" + "sync" ) // Manager is the control structure for the contacting the user discovery service. @@ -76,7 +73,7 @@ func NewOrLoad(user udE2e, comms Comms, follower udNetworkStatus, return nil, err } - // Set alternative user discovery + // Set user discovery err = m.setUserDiscovery(cert, contactFile, address) if err != nil { return nil, err @@ -96,7 +93,7 @@ func NewOrLoad(user udE2e, comms Comms, follower udNetworkStatus, // NewManagerFromBackup builds a new user discover manager from a backup. // It will construct a manager that is already registered and restore // already registered facts into store. This will default to using the UD server as defined -// by the NDF> +// by the NDF. func NewManagerFromBackup(user udE2e, comms Comms, follower udNetworkStatus, email, phone fact.Fact) (*Manager, error) { jww.INFO.Println("ud.NewManagerFromBackup()") @@ -134,7 +131,7 @@ func NewManagerFromBackup(user udE2e, comms Comms, follower udNetworkStatus, } // Create the user discovery host object - _, err = m.getOrAddUdHost() + _, err = m.getHost() if err != nil { return nil, errors.WithMessage(err, "User Discovery host object could "+ "not be constructed.") @@ -181,96 +178,35 @@ func (m *Manager) GetStringifiedFacts() []string { return m.store.GetStringifiedFacts() } -// GetContact returns the contact for UD as retrieved from the NDF. +// GetContact returns the contact.Contact for UD. func (m *Manager) GetContact() (contact.Contact, error) { grp, err := m.user.GetReceptionIdentity().GetGroup() if err != nil { return contact.Contact{}, err } - // Return alternative User discovery contact if set - if m.ud != nil { - // Unmarshal UD DH public key - alternativeDhPubKey := grp.NewInt(1) - if err := alternativeDhPubKey. - UnmarshalJSON(m.ud.dhPubKey); err != nil { - return contact.Contact{}, - errors.WithMessage(err, "Failed to unmarshal UD "+ - "DH public key.") - } - - return contact.Contact{ - ID: m.ud.host.GetId(), - DhPubKey: alternativeDhPubKey, - OwnershipProof: nil, - Facts: nil, - }, nil - } - - netDef := m.getCmix().GetInstance().GetPartialNdf().Get() - - // Unmarshal UD ID from the NDF - udID, err := id.Unmarshal(netDef.UDB.ID) - if err != nil { - return contact.Contact{}, - errors.Errorf("failed to unmarshal UD ID from NDF: %+v", err) - } - // Unmarshal UD DH public key dhPubKey := grp.NewInt(1) - if err = dhPubKey.UnmarshalJSON(netDef.UDB.DhPubKey); err != nil { + if err := dhPubKey. + UnmarshalJSON(m.ud.dhPubKey); err != nil { return contact.Contact{}, - errors.WithMessage(err, "Failed to unmarshal UD DH "+ - "public key.") + errors.WithMessage(err, "Failed to unmarshal UD "+ + "DH public key.") } + // Return User discovery contact return contact.Contact{ - ID: udID, + ID: m.ud.host.GetId(), DhPubKey: dhPubKey, OwnershipProof: nil, Facts: nil, }, nil -} - -// getOrAddUdHost returns the current UD host for the UD ID found in the NDF. -// If the host does not exist, then it is added and returned. -func (m *Manager) getOrAddUdHost() (*connect.Host, error) { - // Return alternative User discovery service if it has been set - if m.ud != nil { - return m.ud.host, nil - } - netDef := m.getCmix().GetInstance().GetPartialNdf().Get() - if netDef.UDB.Cert == "" { - return nil, errors.New("NDF does not have User Discovery information, " + - "is there network access?: Cert not present.") - } - - // Unmarshal UD ID from the NDF - udID, err := id.Unmarshal(netDef.UDB.ID) - if err != nil { - return nil, errors.Errorf("failed to "+ - "unmarshal UD ID from NDF: %+v", err) - } - - // Return the host, if it exists - host, exists := m.comms.GetHost(udID) - if exists { - return host, nil - } - - params := connect.GetDefaultHostParams() - params.AuthEnabled = false - params.SendTimeout = 20 * time.Second +} - // Add a new host and return it if it does not already exist - host, err = m.comms.AddHost(udID, netDef.UDB.Address, - []byte(netDef.UDB.Cert), params) - if err != nil { - return nil, errors.WithMessage(err, "User Discovery host "+ - "object could not be constructed.") - } +// getHost returns the current UD host. +func (m *Manager) getHost() (*connect.Host, error) { + return m.ud.host, nil - return host, nil } // loadOrNewManager is a helper function which loads from storage or diff --git a/ud/manager_test.go b/ud/manager_test.go index e6a1018baefa7b8963dcf4e946be0d82c2a6d20a..b214c9600302170cc0822b8806ac8c8fe6de943b 100644 --- a/ud/manager_test.go +++ b/ud/manager_test.go @@ -49,7 +49,7 @@ EnretBzQkeKeBwoB2u6NTiOmUjk= var testContact = `<xxc(2)LF2ccT+sdqh0AIKlFFeDOJdnxzbQQYhGStgxhOXmijIDkAZiB9kZo+Dl3bRSbBi5pXZ82rOu2IQXz9+5sspChvoccZqgC/dXGhlesmiNy/EbKxWtptTF4tcNyQxtnmCXg1p/HwKey4G2XDekTw86lq6Lpmj72jozvRWlQisqvWz/5deiPaeFGKDKC0OrrDFnIib7WnKqdYt4XyTKdmObnmbvdCbliZq0zBl7J40qKy5FypYXGlZjStIm0R1qtD4XHMZMsrMJEGxdM55zJdSzknXbR8MNahUrGMyUOTivXLHzojYLht0gFQifKMVWhrDjUoVQV43KOLPmdBwY/2Kc5KvVloDeuDXYY0i7tD63gNIp9JA3gJQUJymDdwqbS13riT1DMHHkdTzKEyGdHS+v2l7AVSlJBiTKuyM00FBNuXhhIcFR7ONFCf8cRPOPPBx3Q6iHNsvsca3KPNhwOJBgaQvHSkjIMsudiR954QbwG9rbi2vxVobIgWYMl5j6vlBS/9rfbE/uLdTEQZfNsLKDCIVCCI4I1bYZxZrDLPrfXTrN6W0sCLE7a/kRBQAAAgA7+LwJqiv9O1ogLnS4TYkSEg==xxc>` -func TestManager_SetAlternativeUserDiscovery(t *testing.T) { +func TestManager_setUserDiscovery(t *testing.T) { m, _ := newTestManager(t) altAddr := "0.0.0.0:11420" diff --git a/ud/register.go b/ud/register.go index 3708ee0790772653893344a35c90c5cc56bbc7ad..8ec2914d6ee2f6b94baaecfee438f2089fa63677 100644 --- a/ud/register.go +++ b/ud/register.go @@ -18,7 +18,7 @@ func (m *Manager) register(username string, networkSignature []byte, rng csprng.Source, comm registerUserComms) error { // Initialize or get host - udHost, err := m.getOrAddUdHost() + udHost, err := m.getHost() if err != nil { return errors.WithMessage(err, "User Discovery host object could "+ diff --git a/ud/remove.go b/ud/remove.go index 5502096c716110456247c9126f7f11d6da93a642..0972b7e770c89c8bf071bb63e9552908a6ddcc03 100644 --- a/ud/remove.go +++ b/ud/remove.go @@ -29,7 +29,7 @@ func (m *Manager) removeFact(f fact.Fact, rFC removeFactComms) error { // Get UD host - udHost, err := m.getOrAddUdHost() + udHost, err := m.getHost() if err != nil { return err } @@ -84,7 +84,7 @@ func (m *Manager) PermanentDeleteAccount(f fact.Fact) error { "a username. Cannot remove fact %q", f.Fact)) } - udHost, err := m.getOrAddUdHost() + udHost, err := m.getHost() if err != nil { return err } diff --git a/ud/remove_test.go b/ud/remove_test.go index a7cd32bc1e94347262147df7faa674d4e91aa000..53b61b3fae3070c08dad9d5d9d8c9d69503b0371 100644 --- a/ud/remove_test.go +++ b/ud/remove_test.go @@ -86,9 +86,9 @@ package ud // // tRFC := testRFC{} // -// udHost, err := m.getOrAddUdHost() +// udHost, err := m.getHost() // if err != nil { -// t.Fatalf("getOrAddUdHost error: %v", err) +// t.Fatalf("getHost error: %v", err) // } // // err = m.permanentDeleteAccount(f, mockId, &tRFC, udHost)