Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
client
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
elixxir
client
Commits
f57da0b1
Commit
f57da0b1
authored
2 years ago
by
Josh Brooks
Browse files
Options
Downloads
Patches
Plain Diff
Remove ud.LoadManager for LoadOrNewManager
parent
9b8afc50
No related branches found
Branches containing commit
No related tags found
Tags containing commit
2 merge requests
!510
Release
,
!292
Remove ud.LoadManager for LoadOrNewManager
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
cmd/ud.go
+2
-11
2 additions, 11 deletions
cmd/ud.go
ud/manager.go
+14
-42
14 additions, 42 deletions
ud/manager.go
ud/register.go
+3
-3
3 additions, 3 deletions
ud/register.go
ud/register_test.go
+7
-5
7 additions, 5 deletions
ud/register_test.go
with
26 additions
and
61 deletions
cmd/ud.go
+
2
−
11
View file @
f57da0b1
...
@@ -10,7 +10,6 @@ package cmd
...
@@ -10,7 +10,6 @@ package cmd
import
(
import
(
"fmt"
"fmt"
"strings"
"time"
"time"
"gitlab.com/elixxir/client/single"
"gitlab.com/elixxir/client/single"
...
@@ -65,18 +64,10 @@ var udCmd = &cobra.Command{
...
@@ -65,18 +64,10 @@ var udCmd = &cobra.Command{
rng
:=
messenger
.
GetRng
()
rng
:=
messenger
.
GetRng
()
userToRegister
:=
viper
.
GetString
(
udRegisterFlag
)
userToRegister
:=
viper
.
GetString
(
udRegisterFlag
)
jww
.
TRACE
.
Printf
(
"[UD] Registering user %v..."
,
userToRegister
)
jww
.
TRACE
.
Printf
(
"[UD] Registering user %v..."
,
userToRegister
)
userDiscoveryMgr
,
err
:=
ud
.
NewManager
(
messenger
,
messenger
.
GetComms
(),
userDiscoveryMgr
,
err
:=
ud
.
LoadOr
NewManager
(
messenger
,
messenger
.
GetComms
(),
messenger
.
NetworkFollowerStatus
,
userToRegister
,
nil
)
messenger
.
NetworkFollowerStatus
,
userToRegister
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
if
strings
.
Contains
(
err
.
Error
(),
ud
.
IsRegisteredErr
)
{
jww
.
FATAL
.
Panicf
(
"Failed to load or create new UD manager: %+v"
,
err
)
userDiscoveryMgr
,
err
=
ud
.
LoadManager
(
messenger
,
messenger
.
GetComms
())
if
err
!=
nil
{
jww
.
FATAL
.
Panicf
(
"Failed to load UD manager: %+v"
,
err
)
}
}
else
{
jww
.
FATAL
.
Panicf
(
"Failed to create new UD manager: %+v"
,
err
)
}
}
}
jww
.
INFO
.
Printf
(
"[UD] Registered user %v"
,
userToRegister
)
jww
.
INFO
.
Printf
(
"[UD] Registered user %v"
,
userToRegister
)
...
...
This diff is collapsed.
Click to expand it.
ud/manager.go
+
14
−
42
View file @
f57da0b1
...
@@ -18,12 +18,6 @@ import (
...
@@ -18,12 +18,6 @@ import (
"gitlab.com/xx_network/primitives/id"
"gitlab.com/xx_network/primitives/id"
)
)
const
(
IsRegisteredErr
=
"NewManager is already registered. "
+
"NewManager is meant for the first instantiation. Use LoadManager "
+
"for all other calls"
)
// Manager is the control structure for the contacting the user discovery service.
// Manager is the control structure for the contacting the user discovery service.
type
Manager
struct
{
type
Manager
struct
{
...
@@ -48,19 +42,15 @@ type Manager struct {
...
@@ -48,19 +42,15 @@ type Manager struct {
// alternativeUd is an alternate User discovery service to circumvent
// alternativeUd is an alternate User discovery service to circumvent
// production. This is for testing with a separately deployed UD service.
// production. This is for testing with a separately deployed UD service.
alternativeUd
*
alternateUd
alternativeUd
*
alternateUd
// registrationValidationSignature for the ReceptionID
// Optional, depending on UD configuration
registrationValidationSignature
[]
byte
}
}
// NewManager builds a new user discovery manager.
//
LoadOr
NewManager builds a new user discovery manager.
// It requires that an updated
// It requires that an updated
// NDF is available and will error if one is not.
// NDF is available and will error if one is not.
// registrationValidationSignature may be set to nil
// registrationValidationSignature may be set to nil
func
NewManager
(
messenger
udE2e
,
comms
Comms
,
follower
udNetworkStatus
,
func
LoadOr
NewManager
(
messenger
udE2e
,
comms
Comms
,
follower
udNetworkStatus
,
username
string
,
registration
ValidationSig
nature
[]
byte
)
(
*
Manager
,
error
)
{
username
string
,
network
ValidationSig
[]
byte
)
(
*
Manager
,
error
)
{
jww
.
INFO
.
Println
(
"ud.NewManager()"
)
jww
.
INFO
.
Println
(
"ud.
LoadOr
NewManager()"
)
if
follower
()
!=
xxdk
.
Running
{
if
follower
()
!=
xxdk
.
Running
{
return
nil
,
errors
.
New
(
return
nil
,
errors
.
New
(
...
@@ -69,13 +59,18 @@ func NewManager(messenger udE2e, comms Comms, follower udNetworkStatus,
...
@@ -69,13 +59,18 @@ func NewManager(messenger udE2e, comms Comms, follower udNetworkStatus,
// Initialize manager
// Initialize manager
m
:=
&
Manager
{
m
:=
&
Manager
{
messenger
:
messenger
,
messenger
:
messenger
,
comms
:
comms
,
comms
:
comms
,
registrationValidationSignature
:
registrationValidationSignature
,
}
}
if
m
.
isRegistered
()
{
if
m
.
isRegistered
()
{
return
nil
,
errors
.
Errorf
(
IsRegisteredErr
)
// Load manager if already registered
var
err
error
m
.
store
,
err
=
store
.
NewOrLoadStore
(
m
.
getKv
())
if
err
!=
nil
{
return
nil
,
errors
.
Errorf
(
"Failed to initialize store: %v"
,
err
)
}
return
m
,
nil
}
}
// Initialize store
// Initialize store
...
@@ -95,7 +90,7 @@ func NewManager(messenger udE2e, comms Comms, follower udNetworkStatus,
...
@@ -95,7 +90,7 @@ func NewManager(messenger udE2e, comms Comms, follower udNetworkStatus,
// Register with user discovery
// Register with user discovery
stream
:=
m
.
getRng
()
.
GetStream
()
stream
:=
m
.
getRng
()
.
GetStream
()
defer
stream
.
Close
()
defer
stream
.
Close
()
err
=
m
.
register
(
username
,
stream
,
m
.
comms
,
udHost
)
err
=
m
.
register
(
username
,
networkValidationSig
,
stream
,
m
.
comms
,
udHost
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Errorf
(
"Failed to register: %v"
,
err
)
return
nil
,
errors
.
Errorf
(
"Failed to register: %v"
,
err
)
}
}
...
@@ -185,29 +180,6 @@ func InitStoreFromBackup(kv *versioned.KV,
...
@@ -185,29 +180,6 @@ func InitStoreFromBackup(kv *versioned.KV,
return
nil
return
nil
}
}
// LoadManager loads the state of the Manager
// from disk. This is meant to be called after any the first
// instantiation of the manager by NewUserDiscovery.
func
LoadManager
(
messenger
udE2e
,
comms
Comms
)
(
*
Manager
,
error
)
{
m
:=
&
Manager
{
messenger
:
messenger
,
comms
:
comms
,
}
if
!
m
.
isRegistered
()
{
return
nil
,
errors
.
Errorf
(
"LoadManager could not detect that "
+
"the user has been registered. Has a manager been initiated before?"
)
}
var
err
error
m
.
store
,
err
=
store
.
NewOrLoadStore
(
m
.
getKv
())
if
err
!=
nil
{
return
nil
,
errors
.
Errorf
(
"Failed to initialize store: %v"
,
err
)
}
return
m
,
err
}
// GetFacts returns a list of fact.Fact objects that exist within the
// GetFacts returns a list of fact.Fact objects that exist within the
// Store's registeredFacts map.
// Store's registeredFacts map.
func
(
m
*
Manager
)
GetFacts
()
[]
fact
.
Fact
{
func
(
m
*
Manager
)
GetFacts
()
[]
fact
.
Fact
{
...
...
This diff is collapsed.
Click to expand it.
ud/register.go
+
3
−
3
View file @
f57da0b1
...
@@ -14,8 +14,8 @@ import (
...
@@ -14,8 +14,8 @@ import (
// register initiates registration with user discovery given a specified
// register initiates registration with user discovery given a specified
// username. Provided a comms sub-interface to facilitate testing.
// username. Provided a comms sub-interface to facilitate testing.
func
(
m
*
Manager
)
register
(
username
string
,
rng
csprng
.
Sourc
e
,
func
(
m
*
Manager
)
register
(
username
string
,
networkSignature
[]
byt
e
,
comm
registerUserComms
,
udHost
*
connect
.
Host
)
error
{
rng
csprng
.
Source
,
comm
registerUserComms
,
udHost
*
connect
.
Host
)
error
{
var
err
error
var
err
error
identity
:=
m
.
messenger
.
GetReceptionIdentity
()
identity
:=
m
.
messenger
.
GetReceptionIdentity
()
...
@@ -35,7 +35,7 @@ func (m *Manager) register(username string, rng csprng.Source,
...
@@ -35,7 +35,7 @@ func (m *Manager) register(username string, rng csprng.Source,
// Construct the user registration message
// Construct the user registration message
msg
:=
&
pb
.
UDBUserRegistration
{
msg
:=
&
pb
.
UDBUserRegistration
{
PermissioningSignature
:
m
.
registrationValidation
Signature
,
PermissioningSignature
:
network
Signature
,
RSAPublicPem
:
string
(
rsa
.
CreatePublicKeyPem
(
privKey
.
GetPublic
())),
RSAPublicPem
:
string
(
rsa
.
CreatePublicKeyPem
(
privKey
.
GetPublic
())),
IdentityRegistration
:
&
pb
.
Identity
{
IdentityRegistration
:
&
pb
.
Identity
{
Username
:
username
,
Username
:
username
,
...
...
This diff is collapsed.
Click to expand it.
ud/register_test.go
+
7
−
5
View file @
f57da0b1
...
@@ -34,13 +34,15 @@ func TestManager_register(t *testing.T) {
...
@@ -34,13 +34,15 @@ func TestManager_register(t *testing.T) {
c
:=
&
testRegisterComm
{}
c
:=
&
testRegisterComm
{}
prng
:=
NewPrng
(
42
)
prng
:=
NewPrng
(
42
)
err
=
m
.
register
(
"testUser"
,
prng
,
c
,
udHost
)
mockSig
:=
[]
byte
(
"mock"
)
err
=
m
.
register
(
"testUser"
,
mockSig
,
prng
,
c
,
udHost
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"register() returned an error: %+v"
,
err
)
t
.
Errorf
(
"register() returned an error: %+v"
,
err
)
}
}
// Check if the UDBUserRegistration contents are correct
// Check if the UDBUserRegistration contents are correct
isCorrect
(
"testUser"
,
c
.
msg
,
m
,
t
)
isCorrect
(
"testUser"
,
mockSig
,
c
.
msg
,
m
,
t
)
// Verify the signed identity data
// Verify the signed identity data
pubKeyPem
:=
m
.
messenger
.
GetReceptionIdentity
()
.
RSAPrivatePem
pubKeyPem
:=
m
.
messenger
.
GetReceptionIdentity
()
.
RSAPrivatePem
...
@@ -66,10 +68,10 @@ func TestManager_register(t *testing.T) {
...
@@ -66,10 +68,10 @@ func TestManager_register(t *testing.T) {
// isCorrect checks if the UDBUserRegistration has all the expected fields minus
// isCorrect checks if the UDBUserRegistration has all the expected fields minus
// any signatures.
// any signatures.
func
isCorrect
(
username
string
,
msg
*
pb
.
UDBUserRegistration
,
m
*
Manager
,
t
*
testing
.
T
)
{
func
isCorrect
(
username
string
,
mockSig
[]
byte
,
msg
*
pb
.
UDBUserRegistration
,
m
*
Manager
,
t
*
testing
.
T
)
{
if
!
bytes
.
Equal
(
m
.
registrationValidationSignature
,
msg
.
PermissioningSignature
)
{
if
!
bytes
.
Equal
(
m
ockSig
,
msg
.
PermissioningSignature
)
{
t
.
Errorf
(
"PermissioningSignature incorrect.
\n\t
expected: %v
\n\t
received: %v"
,
t
.
Errorf
(
"PermissioningSignature incorrect.
\n\t
expected: %v
\n\t
received: %v"
,
m
.
registrationValidationSignature
,
msg
.
PermissioningSignature
)
m
ockSig
,
msg
.
PermissioningSignature
)
}
}
identity
:=
m
.
messenger
.
GetReceptionIdentity
()
identity
:=
m
.
messenger
.
GetReceptionIdentity
()
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment