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
e35c5476
Commit
e35c5476
authored
3 years ago
by
Josh Brooks
Browse files
Options
Downloads
Patches
Plain Diff
Remove bad rand.Reader usage in ud/
parent
634df0cc
No related branches found
No related tags found
2 merge requests
!510
Release
,
!241
Remove bad rand.Reader usage in ud/
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
cmd/ud.go
+7
-3
7 additions, 3 deletions
cmd/ud.go
ud/addFact.go
+3
-2
3 additions, 2 deletions
ud/addFact.go
ud/manager.go
+13
-5
13 additions, 5 deletions
ud/manager.go
ud/remove.go
+6
-3
6 additions, 3 deletions
ud/remove.go
with
29 additions
and
13 deletions
cmd/ud.go
+
7
−
3
View file @
e35c5476
...
@@ -78,14 +78,13 @@ var udCmd = &cobra.Command{
...
@@ -78,14 +78,13 @@ var udCmd = &cobra.Command{
waitUntilConnected
(
connected
)
waitUntilConnected
(
connected
)
// Make user discovery manager
// Make user discovery manager
stream
:=
client
.
GetRng
()
.
GetStream
()
rng
:=
client
.
GetRng
()
defer
stream
.
Close
()
userToRegister
:=
viper
.
GetString
(
"register"
)
userToRegister
:=
viper
.
GetString
(
"register"
)
userDiscoveryMgr
,
err
:=
ud
.
NewManager
(
client
.
GetCmix
(),
userDiscoveryMgr
,
err
:=
ud
.
NewManager
(
client
.
GetCmix
(),
client
.
GetE2E
(),
client
.
NetworkFollowerStatus
,
client
.
GetE2E
(),
client
.
NetworkFollowerStatus
,
client
.
GetEventReporter
(),
client
.
GetEventReporter
(),
client
.
GetComms
(),
client
.
GetStorage
(),
client
.
GetComms
(),
client
.
GetStorage
(),
stream
,
rng
,
userToRegister
,
client
.
GetStorage
()
.
GetKV
())
userToRegister
,
client
.
GetStorage
()
.
GetKV
())
if
err
!=
nil
{
if
err
!=
nil
{
if
strings
.
Contains
(
err
.
Error
(),
ud
.
IsRegisteredErr
)
{
if
strings
.
Contains
(
err
.
Error
(),
ud
.
IsRegisteredErr
)
{
...
@@ -163,12 +162,15 @@ var udCmd = &cobra.Command{
...
@@ -163,12 +162,15 @@ var udCmd = &cobra.Command{
}
}
printContact
(
newContact
)
printContact
(
newContact
)
}
}
stream
:=
rng
.
GetStream
()
_
,
_
,
err
=
ud
.
Lookup
(
client
.
GetCmix
(),
_
,
_
,
err
=
ud
.
Lookup
(
client
.
GetCmix
(),
stream
,
client
.
GetE2E
()
.
GetGroup
(),
stream
,
client
.
GetE2E
()
.
GetGroup
(),
udContact
,
cb
,
lookupID
,
single
.
GetDefaultRequestParams
())
udContact
,
cb
,
lookupID
,
single
.
GetDefaultRequestParams
())
if
err
!=
nil
{
if
err
!=
nil
{
jww
.
WARN
.
Printf
(
"Failed UD lookup: %+v"
,
err
)
jww
.
WARN
.
Printf
(
"Failed UD lookup: %+v"
,
err
)
}
}
stream
.
Close
()
time
.
Sleep
(
31
*
time
.
Second
)
time
.
Sleep
(
31
*
time
.
Second
)
}
}
...
@@ -256,6 +258,8 @@ var udCmd = &cobra.Command{
...
@@ -256,6 +258,8 @@ var udCmd = &cobra.Command{
}
}
}
}
stream
:=
rng
.
GetStream
()
defer
stream
.
Close
()
_
,
_
,
err
=
ud
.
Search
(
client
.
GetCmix
(),
_
,
_
,
err
=
ud
.
Search
(
client
.
GetCmix
(),
client
.
GetEventReporter
(),
client
.
GetEventReporter
(),
stream
,
client
.
GetE2E
()
.
GetGroup
(),
stream
,
client
.
GetE2E
()
.
GetGroup
(),
...
...
This diff is collapsed.
Click to expand it.
ud/addFact.go
+
3
−
2
View file @
e35c5476
package
ud
package
ud
import
(
import
(
"crypto/rand"
"github.com/pkg/errors"
"github.com/pkg/errors"
jww
"github.com/spf13/jwalterweatherman"
jww
"github.com/spf13/jwalterweatherman"
pb
"gitlab.com/elixxir/comms/mixmessages"
pb
"gitlab.com/elixxir/comms/mixmessages"
...
@@ -47,7 +46,9 @@ func (m *Manager) addFact(inFact fact.Fact, myId *id.ID,
...
@@ -47,7 +46,9 @@ func (m *Manager) addFact(inFact fact.Fact, myId *id.ID,
// Sign our inFact for putting into the request
// Sign our inFact for putting into the request
privKey
:=
m
.
user
.
PortableUserInfo
()
.
ReceptionRSA
privKey
:=
m
.
user
.
PortableUserInfo
()
.
ReceptionRSA
fSig
,
err
:=
rsa
.
Sign
(
rand
.
Reader
,
privKey
,
hash
.
CMixHash
,
fHash
,
nil
)
stream
:=
m
.
rng
.
GetStream
()
defer
stream
.
Close
()
fSig
,
err
:=
rsa
.
Sign
(
stream
,
privKey
,
hash
.
CMixHash
,
fHash
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
...
...
This diff is collapsed.
Click to expand it.
ud/manager.go
+
13
−
5
View file @
e35c5476
...
@@ -2,6 +2,7 @@ package ud
...
@@ -2,6 +2,7 @@ package ud
import
(
import
(
"fmt"
"fmt"
"gitlab.com/elixxir/crypto/fastRNG"
"sync"
"sync"
"time"
"time"
...
@@ -14,7 +15,6 @@ import (
...
@@ -14,7 +15,6 @@ import (
"gitlab.com/elixxir/crypto/contact"
"gitlab.com/elixxir/crypto/contact"
"gitlab.com/elixxir/primitives/fact"
"gitlab.com/elixxir/primitives/fact"
"gitlab.com/xx_network/comms/connect"
"gitlab.com/xx_network/comms/connect"
"gitlab.com/xx_network/crypto/csprng"
"gitlab.com/xx_network/primitives/id"
"gitlab.com/xx_network/primitives/id"
)
)
...
@@ -65,6 +65,8 @@ type Manager struct {
...
@@ -65,6 +65,8 @@ 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
rng
*
fastRNG
.
StreamGenerator
}
}
// NewManager builds a new user discovery manager.
// NewManager builds a new user discovery manager.
...
@@ -73,7 +75,7 @@ type Manager struct {
...
@@ -73,7 +75,7 @@ type Manager struct {
func
NewManager
(
services
CMix
,
e2e
E2E
,
func
NewManager
(
services
CMix
,
e2e
E2E
,
follower
NetworkStatus
,
follower
NetworkStatus
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
rng
csprng
.
Source
,
username
string
,
rng
*
fastRNG
.
StreamGenerator
,
username
string
,
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
jww
.
INFO
.
Println
(
"ud.NewManager()"
)
jww
.
INFO
.
Println
(
"ud.NewManager()"
)
...
@@ -90,6 +92,7 @@ func NewManager(services CMix, e2e E2E,
...
@@ -90,6 +92,7 @@ func NewManager(services CMix, e2e E2E,
comms
:
comms
,
comms
:
comms
,
user
:
userStore
,
user
:
userStore
,
kv
:
kv
,
kv
:
kv
,
rng
:
rng
,
}
}
if
m
.
isRegistered
()
{
if
m
.
isRegistered
()
{
...
@@ -111,7 +114,9 @@ func NewManager(services CMix, e2e E2E,
...
@@ -111,7 +114,9 @@ func NewManager(services CMix, e2e E2E,
}
}
// Register with user discovery
// Register with user discovery
err
=
m
.
register
(
username
,
rng
,
comms
,
udHost
)
stream
:=
rng
.
GetStream
()
defer
stream
.
Close
()
err
=
m
.
register
(
username
,
stream
,
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
)
}
}
...
@@ -132,6 +137,7 @@ func NewManager(services CMix, e2e E2E,
...
@@ -132,6 +137,7 @@ func NewManager(services CMix, e2e E2E,
func
NewManagerFromBackup
(
services
CMix
,
func
NewManagerFromBackup
(
services
CMix
,
e2e
E2E
,
follower
NetworkStatus
,
e2e
E2E
,
follower
NetworkStatus
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
rng
*
fastRNG
.
StreamGenerator
,
email
,
phone
fact
.
Fact
,
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
email
,
phone
fact
.
Fact
,
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
jww
.
INFO
.
Println
(
"ud.NewManagerFromBackup()"
)
jww
.
INFO
.
Println
(
"ud.NewManagerFromBackup()"
)
if
follower
()
!=
xxdk
.
Running
{
if
follower
()
!=
xxdk
.
Running
{
...
@@ -148,6 +154,7 @@ func NewManagerFromBackup(services CMix,
...
@@ -148,6 +154,7 @@ func NewManagerFromBackup(services CMix,
comms
:
comms
,
comms
:
comms
,
user
:
userStore
,
user
:
userStore
,
kv
:
kv
,
kv
:
kv
,
rng
:
rng
,
}
}
// Initialize our store
// Initialize our store
...
@@ -212,6 +219,7 @@ func InitStoreFromBackup(kv *versioned.KV,
...
@@ -212,6 +219,7 @@ func InitStoreFromBackup(kv *versioned.KV,
// instantiation of the manager by NewUserDiscovery.
// instantiation of the manager by NewUserDiscovery.
func
LoadManager
(
services
CMix
,
e2e
E2E
,
func
LoadManager
(
services
CMix
,
e2e
E2E
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
rng
*
fastRNG
.
StreamGenerator
,
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
m
:=
&
Manager
{
m
:=
&
Manager
{
...
@@ -220,7 +228,7 @@ func LoadManager(services CMix, e2e E2E,
...
@@ -220,7 +228,7 @@ func LoadManager(services CMix, e2e E2E,
events
:
events
,
events
:
events
,
comms
:
comms
,
comms
:
comms
,
user
:
userStore
,
user
:
userStore
,
rng
:
rng
,
kv
:
kv
,
kv
:
kv
,
}
}
...
...
This diff is collapsed.
Click to expand it.
ud/remove.go
+
6
−
3
View file @
e35c5476
package
ud
package
ud
import
(
import
(
"crypto/rand"
"fmt"
"fmt"
"github.com/pkg/errors"
"github.com/pkg/errors"
jww
"github.com/spf13/jwalterweatherman"
jww
"github.com/spf13/jwalterweatherman"
...
@@ -47,7 +46,9 @@ func (m *Manager) removeFact(f fact.Fact,
...
@@ -47,7 +46,9 @@ func (m *Manager) removeFact(f fact.Fact,
// Sign our inFact for putting into the request
// Sign our inFact for putting into the request
privKey
:=
m
.
user
.
PortableUserInfo
()
.
ReceptionRSA
privKey
:=
m
.
user
.
PortableUserInfo
()
.
ReceptionRSA
fSig
,
err
:=
rsa
.
Sign
(
rand
.
Reader
,
privKey
,
hash
.
CMixHash
,
fHash
,
nil
)
stream
:=
m
.
rng
.
GetStream
()
defer
stream
.
Close
()
fSig
,
err
:=
rsa
.
Sign
(
stream
,
privKey
,
hash
.
CMixHash
,
fHash
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
@@ -103,7 +104,9 @@ func (m *Manager) permanentDeleteAccount(f fact.Fact, myId *id.ID, privateKey *r
...
@@ -103,7 +104,9 @@ func (m *Manager) permanentDeleteAccount(f fact.Fact, myId *id.ID, privateKey *r
fHash
:=
factID
.
Fingerprint
(
f
)
fHash
:=
factID
.
Fingerprint
(
f
)
// Sign our inFact for putting into the request
// Sign our inFact for putting into the request
fsig
,
err
:=
rsa
.
Sign
(
rand
.
Reader
,
privateKey
,
hash
.
CMixHash
,
fHash
,
nil
)
stream
:=
m
.
rng
.
GetStream
()
defer
stream
.
Close
()
fsig
,
err
:=
rsa
.
Sign
(
stream
,
privateKey
,
hash
.
CMixHash
,
fHash
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
...
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