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
e3cf8ac9
Commit
e3cf8ac9
authored
2 years ago
by
Jake Taylor
Browse files
Options
Downloads
Plain Diff
Merge branch 'josh/RemoveBadRand' into 'release'
Remove bad rand.Reader usage in ud/ See merge request
!241
parents
b2d8e080
6daf43d1
Branches
Branches containing commit
Tags
Tags containing commit
2 merge requests
!510
Release
,
!241
Remove bad rand.Reader usage in ud/
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
cmd/ud.go
+9
-4
9 additions, 4 deletions
cmd/ud.go
ud/addFact.go
+3
-2
3 additions, 2 deletions
ud/addFact.go
ud/manager.go
+15
-5
15 additions, 5 deletions
ud/manager.go
ud/remove.go
+6
-3
6 additions, 3 deletions
ud/remove.go
ud/utils_test.go
+4
-0
4 additions, 0 deletions
ud/utils_test.go
with
37 additions
and
14 deletions
cmd/ud.go
+
9
−
4
View file @
e3cf8ac9
...
...
@@ -78,21 +78,21 @@ var udCmd = &cobra.Command{
waitUntilConnected
(
connected
)
// Make user discovery manager
stream
:=
client
.
GetRng
()
.
GetStream
()
defer
stream
.
Close
()
rng
:=
client
.
GetRng
()
userToRegister
:=
viper
.
GetString
(
"register"
)
userDiscoveryMgr
,
err
:=
ud
.
NewManager
(
client
.
GetCmix
(),
client
.
GetE2E
(),
client
.
NetworkFollowerStatus
,
client
.
GetEventReporter
(),
client
.
GetComms
(),
client
.
GetStorage
(),
stream
,
rng
,
userToRegister
,
client
.
GetStorage
()
.
GetKV
())
if
err
!=
nil
{
if
strings
.
Contains
(
err
.
Error
(),
ud
.
IsRegisteredErr
)
{
userDiscoveryMgr
,
err
=
ud
.
LoadManager
(
client
.
GetCmix
(),
client
.
GetE2E
(),
client
.
GetEventReporter
(),
client
.
GetComms
(),
client
.
GetStorage
(),
client
.
GetStorage
()
.
GetKV
())
client
.
GetStorage
(),
client
.
GetRng
(),
client
.
GetStorage
()
.
GetKV
())
if
err
!=
nil
{
jww
.
FATAL
.
Panicf
(
"Failed to load UD manager: %+v"
,
err
)
}
...
...
@@ -163,12 +163,15 @@ var udCmd = &cobra.Command{
}
printContact
(
newContact
)
}
stream
:=
rng
.
GetStream
()
_
,
_
,
err
=
ud
.
Lookup
(
client
.
GetCmix
(),
stream
,
client
.
GetE2E
()
.
GetGroup
(),
udContact
,
cb
,
lookupID
,
single
.
GetDefaultRequestParams
())
if
err
!=
nil
{
jww
.
WARN
.
Printf
(
"Failed UD lookup: %+v"
,
err
)
}
stream
.
Close
()
time
.
Sleep
(
31
*
time
.
Second
)
}
...
...
@@ -256,6 +259,8 @@ var udCmd = &cobra.Command{
}
}
stream
:=
rng
.
GetStream
()
defer
stream
.
Close
()
_
,
_
,
err
=
ud
.
Search
(
client
.
GetCmix
(),
client
.
GetEventReporter
(),
stream
,
client
.
GetE2E
()
.
GetGroup
(),
...
...
This diff is collapsed.
Click to expand it.
ud/addFact.go
+
3
−
2
View file @
e3cf8ac9
package
ud
import
(
"crypto/rand"
"github.com/pkg/errors"
jww
"github.com/spf13/jwalterweatherman"
pb
"gitlab.com/elixxir/comms/mixmessages"
...
...
@@ -47,7 +46,9 @@ func (m *Manager) addFact(inFact fact.Fact, myId *id.ID,
// Sign our inFact for putting into the request
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
{
return
""
,
err
}
...
...
This diff is collapsed.
Click to expand it.
ud/manager.go
+
15
−
5
View file @
e3cf8ac9
...
...
@@ -2,6 +2,7 @@ package ud
import
(
"fmt"
"gitlab.com/elixxir/crypto/fastRNG"
"sync"
"time"
...
...
@@ -14,7 +15,6 @@ import (
"gitlab.com/elixxir/crypto/contact"
"gitlab.com/elixxir/primitives/fact"
"gitlab.com/xx_network/comms/connect"
"gitlab.com/xx_network/crypto/csprng"
"gitlab.com/xx_network/primitives/id"
)
...
...
@@ -65,6 +65,10 @@ type Manager struct {
// alternativeUd is an alternate User discovery service to circumvent
// production. This is for testing with a separately deployed UD service.
alternativeUd
*
alternateUd
// rng is a fastRNG.StreamGenerator which is used to generate random
// data. This is used for signatures for adding/removing facts.
rng
*
fastRNG
.
StreamGenerator
}
// NewManager builds a new user discovery manager.
...
...
@@ -73,7 +77,7 @@ type Manager struct {
func
NewManager
(
services
CMix
,
e2e
E2E
,
follower
NetworkStatus
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
rng
csprng
.
Source
,
username
string
,
rng
*
fastRNG
.
StreamGenerator
,
username
string
,
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
jww
.
INFO
.
Println
(
"ud.NewManager()"
)
...
...
@@ -90,6 +94,7 @@ func NewManager(services CMix, e2e E2E,
comms
:
comms
,
user
:
userStore
,
kv
:
kv
,
rng
:
rng
,
}
if
m
.
isRegistered
()
{
...
...
@@ -111,7 +116,9 @@ func NewManager(services CMix, e2e E2E,
}
// 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
{
return
nil
,
errors
.
Errorf
(
"Failed to register: %v"
,
err
)
}
...
...
@@ -132,6 +139,7 @@ func NewManager(services CMix, e2e E2E,
func
NewManagerFromBackup
(
services
CMix
,
e2e
E2E
,
follower
NetworkStatus
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
rng
*
fastRNG
.
StreamGenerator
,
email
,
phone
fact
.
Fact
,
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
jww
.
INFO
.
Println
(
"ud.NewManagerFromBackup()"
)
if
follower
()
!=
xxdk
.
Running
{
...
...
@@ -148,6 +156,7 @@ func NewManagerFromBackup(services CMix,
comms
:
comms
,
user
:
userStore
,
kv
:
kv
,
rng
:
rng
,
}
// Initialize our store
...
...
@@ -212,6 +221,7 @@ func InitStoreFromBackup(kv *versioned.KV,
// instantiation of the manager by NewUserDiscovery.
func
LoadManager
(
services
CMix
,
e2e
E2E
,
events
event
.
Reporter
,
comms
Comms
,
userStore
UserInfo
,
rng
*
fastRNG
.
StreamGenerator
,
kv
*
versioned
.
KV
)
(
*
Manager
,
error
)
{
m
:=
&
Manager
{
...
...
@@ -220,7 +230,7 @@ func LoadManager(services CMix, e2e E2E,
events
:
events
,
comms
:
comms
,
user
:
userStore
,
rng
:
rng
,
kv
:
kv
,
}
...
...
This diff is collapsed.
Click to expand it.
ud/remove.go
+
6
−
3
View file @
e3cf8ac9
package
ud
import
(
"crypto/rand"
"fmt"
"github.com/pkg/errors"
jww
"github.com/spf13/jwalterweatherman"
...
...
@@ -47,7 +46,9 @@ func (m *Manager) removeFact(f fact.Fact,
// Sign our inFact for putting into the request
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
{
return
err
}
...
...
@@ -103,7 +104,9 @@ func (m *Manager) permanentDeleteAccount(f fact.Fact, myId *id.ID, privateKey *r
fHash
:=
factID
.
Fingerprint
(
f
)
// 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
{
return
err
}
...
...
This diff is collapsed.
Click to expand it.
ud/utils_test.go
+
4
−
0
View file @
e3cf8ac9
...
...
@@ -24,6 +24,7 @@ import (
"gitlab.com/elixxir/comms/testkeys"
"gitlab.com/elixxir/crypto/contact"
"gitlab.com/elixxir/crypto/cyclic"
"gitlab.com/elixxir/crypto/fastRNG"
"gitlab.com/elixxir/ekv"
"gitlab.com/elixxir/primitives/format"
"gitlab.com/xx_network/comms/messages"
...
...
@@ -69,6 +70,8 @@ func newTestManager(t *testing.T) (*Manager, *testNetworkManager) {
t
.
Fatalf
(
"Failed to initialize store %v"
,
err
)
}
rngGen
:=
fastRNG
.
NewStreamGenerator
(
1000
,
10
,
csprng
.
NewSystemRNG
)
// Create our Manager object
m
:=
&
Manager
{
e2e
:
mockE2e
{
grp
:
getGroup
()},
...
...
@@ -76,6 +79,7 @@ func newTestManager(t *testing.T) (*Manager, *testNetworkManager) {
user
:
mockUser
{
testing
:
t
,
key
:
key
},
store
:
udStore
,
comms
:
&
mockComms
{},
rng
:
rngGen
,
kv
:
kv
,
}
tnm
:=
newTestNetworkManager
(
t
)
...
...
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