Skip to content
Snippets Groups Projects
Commit e35c5476 authored by Josh Brooks's avatar Josh Brooks
Browse files

Remove bad rand.Reader usage in ud/

parent 634df0cc
No related branches found
No related tags found
2 merge requests!510Release,!241Remove bad rand.Reader usage in ud/
...@@ -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(),
......
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
} }
......
...@@ -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,
} }
......
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
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment