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

Fix pipeline, clean up testing infrastructure

parent 61a54610
No related branches found
No related tags found
2 merge requests!510Release,!260made ud package use e2e.ReceptionID
package ud package ud
import ( import (
"gitlab.com/elixxir/client/cmix"
"gitlab.com/elixxir/client/e2e" "gitlab.com/elixxir/client/e2e"
"gitlab.com/elixxir/client/event" "gitlab.com/elixxir/client/event"
"gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/single"
"gitlab.com/elixxir/client/storage" "gitlab.com/elixxir/client/storage"
"gitlab.com/elixxir/client/xxdk" "gitlab.com/elixxir/client/xxdk"
"gitlab.com/elixxir/comms/client"
"gitlab.com/elixxir/crypto/fastRNG" "gitlab.com/elixxir/crypto/fastRNG"
) )
...@@ -23,10 +21,10 @@ type CMix interface { ...@@ -23,10 +21,10 @@ type CMix interface {
// relevant to what is used in this package. // relevant to what is used in this package.
type E2E interface { type E2E interface {
GetReceptionIdentity() xxdk.ReceptionIdentity GetReceptionIdentity() xxdk.ReceptionIdentity
GetCmix() cmix.Client GetCmix() CMix
GetE2E() e2e.Handler GetE2E() e2e.Handler
GetEventReporter() event.Reporter GetEventReporter() event.Reporter
GetComms() *client.Comms GetComms() Comms
GetRng() *fastRNG.StreamGenerator GetRng() *fastRNG.StreamGenerator
GetStorage() storage.Session GetStorage() storage.Session
GetTransmissionIdentity() xxdk.TransmissionIdentity GetTransmissionIdentity() xxdk.TransmissionIdentity
......
...@@ -65,8 +65,8 @@ func TestManager_Lookup(t *testing.T) { ...@@ -65,8 +65,8 @@ func TestManager_Lookup(t *testing.T) {
defer mockListener.Stop() defer mockListener.Stop()
r := m.e2e.GetGroup().NewInt(1) r := m.e2e.GetE2E().GetGroup().NewInt(1)
m.e2e.GetGroup().Random(r) m.e2e.GetE2E().GetGroup().Random(r)
s := "" s := ""
jsonable, err := r.MarshalJSON() jsonable, err := r.MarshalJSON()
if err != nil { if err != nil {
......
package ud
import (
pb "gitlab.com/elixxir/comms/mixmessages"
"gitlab.com/xx_network/comms/connect"
"gitlab.com/xx_network/comms/messages"
"gitlab.com/xx_network/primitives/id"
)
type mockComms struct {
udHost *connect.Host
}
func (m mockComms) SendRegisterUser(host *connect.Host, message *pb.UDBUserRegistration) (*messages.Ack, error) {
return nil, nil
}
func (m mockComms) SendRegisterFact(host *connect.Host, message *pb.FactRegisterRequest) (*pb.FactRegisterResponse, error) {
return nil, nil
}
func (m mockComms) SendConfirmFact(host *connect.Host, message *pb.FactConfirmRequest) (*messages.Ack, error) {
return nil, nil
}
func (m mockComms) SendRemoveFact(host *connect.Host, message *pb.FactRemovalRequest) (*messages.Ack, error) {
return nil, nil
}
func (m mockComms) SendRemoveUser(host *connect.Host, message *pb.FactRemovalRequest) (*messages.Ack, error) {
return nil, nil
}
func (m *mockComms) AddHost(hid *id.ID, address string, cert []byte, params connect.HostParams) (host *connect.Host, err error) {
h, err := connect.NewHost(hid, address, cert, params)
if err != nil {
return nil, err
}
m.udHost = h
return h, nil
}
func (m mockComms) GetHost(hostId *id.ID) (*connect.Host, bool) {
return m.udHost, true
}
package ud
import (
"github.com/cloudflare/circl/dh/sidh"
"gitlab.com/elixxir/client/catalog"
"gitlab.com/elixxir/client/cmix/message"
"gitlab.com/elixxir/client/e2e"
"gitlab.com/elixxir/client/e2e/ratchet/partner"
"gitlab.com/elixxir/client/e2e/ratchet/partner/session"
"gitlab.com/elixxir/client/e2e/receive"
"gitlab.com/elixxir/client/event"
"gitlab.com/elixxir/client/stoppable"
"gitlab.com/elixxir/client/storage"
"gitlab.com/elixxir/client/xxdk"
"gitlab.com/elixxir/crypto/cyclic"
cryptoE2e "gitlab.com/elixxir/crypto/e2e"
"gitlab.com/elixxir/crypto/fastRNG"
"gitlab.com/xx_network/crypto/csprng"
"gitlab.com/xx_network/crypto/signature/rsa"
"gitlab.com/xx_network/primitives/id"
"testing"
"time"
)
///////////////////////////////////////////////////////////////////////////////
// Mock of the E2E interface within this package //////////////////////////////
///////////////////////////////////////////////////////////////////////////////
type mockE2e struct {
grp *cyclic.Group
t testing.TB
key *rsa.PrivateKey
}
func (m mockE2e) GetE2E() e2e.Handler {
return mockE2eHandler{}
}
func (m mockE2e) GetReceptionIdentity() xxdk.ReceptionIdentity {
dhPrivKey, _ := getGroup().NewInt(5).MarshalJSON()
grp, _ := getGroup().MarshalJSON()
return xxdk.ReceptionIdentity{
ID: id.NewIdFromString("test", id.User, m.t),
RSAPrivatePem: rsa.CreatePrivateKeyPem(m.key),
Salt: []byte("test"),
DHKeyPrivate: dhPrivKey,
E2eGrp: grp,
}
}
func (m mockE2e) GetRng() *fastRNG.StreamGenerator {
return fastRNG.NewStreamGenerator(1000, 10, csprng.NewSystemRNG)
}
func (m mockE2e) GetTransmissionIdentity() xxdk.TransmissionIdentity {
return xxdk.TransmissionIdentity{
ID: id.NewIdFromString("test", id.User, m.t),
RSAPrivatePem: m.key,
Salt: []byte("test"),
}
}
func (m mockE2e) GetHistoricalDHPubkey() *cyclic.Int {
return m.grp.NewInt(6)
}
func (m mockE2e) GetReceptionID() *id.ID {
return id.NewIdFromString("test", id.User, m.t)
}
func (m mockE2e) GetGroup() *cyclic.Group {
return getGroup()
}
func (m mockE2e) GetEventReporter() event.Reporter {
return mockReporter{}
}
func (m mockE2e) GetComms() Comms {
return &mockComms{}
}
func (m mockE2e) GetCmix() CMix {
//TODO implement me
panic("implement me")
}
func (m mockE2e) GetStorage() storage.Session {
//TODO implement me
panic("implement me")
}
///////////////////////////////////////////////////////////////////////////////
// Mock of the e2e.Handler interface within this package //////////////////////
///////////////////////////////////////////////////////////////////////////////
type mockE2eHandler struct{}
func (m mockE2eHandler) StartProcesses() (stoppable.Stoppable, error) {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) SendE2E(mt catalog.MessageType, recipient *id.ID, payload []byte, params e2e.Params) ([]id.Round, cryptoE2e.MessageID, time.Time, error) {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) RegisterListener(senderID *id.ID, messageType catalog.MessageType, newListener receive.Listener) receive.ListenerID {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) RegisterFunc(name string, senderID *id.ID, messageType catalog.MessageType, newListener receive.ListenerFunc) receive.ListenerID {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) RegisterChannel(name string, senderID *id.ID, messageType catalog.MessageType, newListener chan receive.Message) receive.ListenerID {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) Unregister(listenerID receive.ListenerID) {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) UnregisterUserListeners(userID *id.ID) {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) AddPartner(partnerID *id.ID, partnerPubKey, myPrivKey *cyclic.Int, partnerSIDHPubKey *sidh.PublicKey, mySIDHPrivKey *sidh.PrivateKey, sendParams, receiveParams session.Params) (partner.Manager, error) {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) GetPartner(partnerID *id.ID) (partner.Manager, error) {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) DeletePartner(partnerId *id.ID) error {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) GetAllPartnerIDs() []*id.ID {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) HasAuthenticatedChannel(partner *id.ID) bool {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) AddService(tag string, processor message.Processor) error {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) RemoveService(tag string) error {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) SendUnsafe(mt catalog.MessageType, recipient *id.ID, payload []byte, params e2e.Params) ([]id.Round, time.Time, error) {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) EnableUnsafeReception() {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) GetHistoricalDHPubkey() *cyclic.Int {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) GetHistoricalDHPrivkey() *cyclic.Int {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) GetReceptionID() *id.ID {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) FirstPartitionSize() uint {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) SecondPartitionSize() uint {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) PartitionSize(payloadIndex uint) uint {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) PayloadSize() uint {
//TODO implement me
panic("implement me")
}
func (m mockE2eHandler) GetGroup() *cyclic.Group {
return getGroup()
}
...@@ -43,8 +43,13 @@ func TestManager_register(t *testing.T) { ...@@ -43,8 +43,13 @@ func TestManager_register(t *testing.T) {
isCorrect("testUser", c.msg, m, t) isCorrect("testUser", c.msg, m, t)
// Verify the signed identity data // Verify the signed identity data
pubKey := m.user.PortableUserInfo().ReceptionRSA.GetPublic() pubKeyPem := m.e2e.GetReceptionIdentity().RSAPrivatePem
err = rsa.Verify(pubKey, hash.CMixHash, c.msg.IdentityRegistration.Digest(), privKey, err := rsa.LoadPrivateKeyFromPem(pubKeyPem)
if err != nil {
t.Fatalf("Failed to load public key: %+v", err)
}
err = rsa.Verify(privKey.GetPublic(), hash.CMixHash, c.msg.IdentityRegistration.Digest(),
c.msg.IdentitySignature, nil) c.msg.IdentitySignature, nil)
if err != nil { if err != nil {
t.Errorf("Failed to verify signed identity data: %+v", err) t.Errorf("Failed to verify signed identity data: %+v", err)
...@@ -52,7 +57,7 @@ func TestManager_register(t *testing.T) { ...@@ -52,7 +57,7 @@ func TestManager_register(t *testing.T) {
// Verify the signed fact // Verify the signed fact
usernameFact, _ := fact.NewFact(fact.Username, "testUser") usernameFact, _ := fact.NewFact(fact.Username, "testUser")
err = rsa.Verify(pubKey, hash.CMixHash, factID.Fingerprint(usernameFact), err = rsa.Verify(privKey.GetPublic(), hash.CMixHash, factID.Fingerprint(usernameFact),
c.msg.Frs.FactSig, nil) c.msg.Frs.FactSig, nil)
if err != nil { if err != nil {
t.Errorf("Failed to verify signed fact data: %+v", err) t.Errorf("Failed to verify signed fact data: %+v", err)
...@@ -62,17 +67,23 @@ func TestManager_register(t *testing.T) { ...@@ -62,17 +67,23 @@ 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, msg *pb.UDBUserRegistration, m *Manager, t *testing.T) {
userInfo := m.user.PortableUserInfo() if !bytes.Equal(m.registrationValidationSignature, msg.PermissioningSignature) {
if !bytes.Equal(m.user.GetReceptionRegistrationValidationSignature(), msg.PermissioningSignature) {
t.Errorf("PermissioningSignature incorrect.\n\texpected: %v\n\treceived: %v", t.Errorf("PermissioningSignature incorrect.\n\texpected: %v\n\treceived: %v",
m.user.GetReceptionRegistrationValidationSignature(), msg.PermissioningSignature) m.registrationValidationSignature, msg.PermissioningSignature)
}
identity := m.e2e.GetReceptionIdentity()
privKey, err := rsa.LoadPrivateKeyFromPem(identity.RSAPrivatePem)
if err != nil {
t.Fatalf("Failed to load private key: %v", err)
} }
if string(rsa.CreatePublicKeyPem(userInfo.TransmissionRSA.GetPublic())) != pubKeyPem := rsa.CreatePublicKeyPem(privKey.GetPublic())
if string(pubKeyPem) !=
msg.RSAPublicPem { msg.RSAPublicPem {
t.Errorf("RSAPublicPem incorrect.\n\texpected: %v\n\treceived: %v", t.Errorf("RSAPublicPem incorrect.\n\texpected: %v\n\treceived: %v",
string(rsa.CreatePublicKeyPem(userInfo.TransmissionRSA.GetPublic())), string(pubKeyPem),
msg.RSAPublicPem) msg.RSAPublicPem)
} }
...@@ -81,19 +92,27 @@ func isCorrect(username string, msg *pb.UDBUserRegistration, m *Manager, t *test ...@@ -81,19 +92,27 @@ func isCorrect(username string, msg *pb.UDBUserRegistration, m *Manager, t *test
username, msg.IdentityRegistration.Username) username, msg.IdentityRegistration.Username)
} }
if !bytes.Equal(userInfo.E2eDhPublicKey.Bytes(), msg.IdentityRegistration.DhPubKey) { dhKeyPriv, err := identity.GetDHKeyPrivate()
if err != nil {
t.Fatalf("%v", err)
}
grp := m.e2e.GetE2E().GetGroup()
dhKeyPub := grp.ExpG(dhKeyPriv, grp.NewInt(1))
if !bytes.Equal(dhKeyPub.Bytes(), msg.IdentityRegistration.DhPubKey) {
t.Errorf("IdentityRegistration DhPubKey incorrect.\n\texpected: %#v\n\treceived: %#v", t.Errorf("IdentityRegistration DhPubKey incorrect.\n\texpected: %#v\n\treceived: %#v",
userInfo.E2eDhPublicKey.Bytes(), msg.IdentityRegistration.DhPubKey) dhKeyPub.Bytes(), msg.IdentityRegistration.DhPubKey)
} }
if !bytes.Equal(userInfo.TransmissionSalt, msg.IdentityRegistration.Salt) { if !bytes.Equal(identity.Salt, msg.IdentityRegistration.Salt) {
t.Errorf("IdentityRegistration Salt incorrect.\n\texpected: %#v\n\treceived: %#v", t.Errorf("IdentityRegistration Salt incorrect.\n\texpected: %#v\n\treceived: %#v",
userInfo.TransmissionSalt, msg.IdentityRegistration.Salt) identity.Salt, msg.IdentityRegistration.Salt)
} }
if !bytes.Equal(userInfo.TransmissionID.Marshal(), msg.Frs.UID) { if !bytes.Equal(identity.ID.Marshal(), msg.Frs.UID) {
t.Errorf("Frs UID incorrect.\n\texpected: %v\n\treceived: %v", t.Errorf("Frs UID incorrect.\n\texpected: %v\n\treceived: %v",
userInfo.TransmissionID.Marshal(), msg.Frs.UID) identity.ID.Marshal(), msg.Frs.UID)
} }
if !reflect.DeepEqual(&pb.Fact{Fact: username}, msg.Frs.Fact) { if !reflect.DeepEqual(&pb.Fact{Fact: username}, msg.Frs.Fact) {
......
...@@ -71,7 +71,7 @@ func TestManager_Search(t *testing.T) { ...@@ -71,7 +71,7 @@ func TestManager_Search(t *testing.T) {
CmixParams: cmix.GetDefaultCMIXParams(), CmixParams: cmix.GetDefaultCMIXParams(),
} }
_, _, err = Search(m.network, m.events, prng, m.e2e.GetGroup(), _, _, err = Search(m.network, m.events, prng, m.e2e.GetE2E().GetGroup(),
udContact, callback, factList, p) udContact, callback, factList, p)
if err != nil { if err != nil {
t.Fatalf("Search() returned an error: %+v", err) t.Fatalf("Search() returned an error: %+v", err)
......
...@@ -20,19 +20,15 @@ import ( ...@@ -20,19 +20,15 @@ import (
"gitlab.com/elixxir/client/storage/user" "gitlab.com/elixxir/client/storage/user"
"gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/storage/versioned"
store "gitlab.com/elixxir/client/ud/store" store "gitlab.com/elixxir/client/ud/store"
pb "gitlab.com/elixxir/comms/mixmessages"
"gitlab.com/elixxir/comms/testkeys"
"gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/contact"
"gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/cyclic"
"gitlab.com/elixxir/crypto/fastRNG" "gitlab.com/elixxir/crypto/fastRNG"
"gitlab.com/elixxir/ekv" "gitlab.com/elixxir/ekv"
"gitlab.com/elixxir/primitives/format" "gitlab.com/elixxir/primitives/format"
"gitlab.com/xx_network/comms/messages"
"gitlab.com/xx_network/crypto/csprng" "gitlab.com/xx_network/crypto/csprng"
"gitlab.com/xx_network/crypto/large" "gitlab.com/xx_network/crypto/large"
"gitlab.com/xx_network/crypto/signature/rsa" "gitlab.com/xx_network/crypto/signature/rsa"
"gitlab.com/xx_network/primitives/id/ephemeral" "gitlab.com/xx_network/primitives/id/ephemeral"
"gitlab.com/xx_network/primitives/utils"
"io" "io"
"math/rand" "math/rand"
"testing" "testing"
...@@ -53,17 +49,6 @@ const dhKeyEnc = `hQj4FKeaQDt34eO/BQe5OSk571WMQBu4YNqMQ0TFeuzjzCM9lLMuOsQhcyjZcI ...@@ -53,17 +49,6 @@ const dhKeyEnc = `hQj4FKeaQDt34eO/BQe5OSk571WMQBu4YNqMQ0TFeuzjzCM9lLMuOsQhcyjZcI
const lookupRequestEnc = `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` const lookupRequestEnc = `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`
func newTestManager(t *testing.T) (*Manager, *testNetworkManager) { func newTestManager(t *testing.T) (*Manager, *testNetworkManager) {
keyData, err := utils.ReadFile(testkeys.GetNodeKeyPath())
if err != nil {
t.Fatalf("Could not load private key: %v", err)
}
key, err := rsa.LoadPrivateKeyFromPem(keyData)
if err != nil {
t.Fatalf("Could not load public key")
}
kv := versioned.NewKV(ekv.MakeMemstore()) kv := versioned.NewKV(ekv.MakeMemstore())
udStore, err := store.NewOrLoadStore(kv) udStore, err := store.NewOrLoadStore(kv)
if err != nil { if err != nil {
...@@ -71,12 +56,18 @@ func newTestManager(t *testing.T) (*Manager, *testNetworkManager) { ...@@ -71,12 +56,18 @@ func newTestManager(t *testing.T) (*Manager, *testNetworkManager) {
} }
rngGen := fastRNG.NewStreamGenerator(1000, 10, csprng.NewSystemRNG) rngGen := fastRNG.NewStreamGenerator(1000, 10, csprng.NewSystemRNG)
stream := rngGen.GetStream()
privKey, err := rsa.GenerateKey(stream, 1024)
stream.Close()
// Create our Manager object // Create our Manager object
m := &Manager{ m := &Manager{
e2e: mockE2e{grp: getGroup()}, e2e: mockE2e{
grp: getGroup(),
t: t,
key: privKey,
},
events: event.NewEventManager(), events: event.NewEventManager(),
user: mockUser{testing: t, key: key},
store: udStore, store: udStore,
comms: &mockComms{}, comms: &mockComms{},
rng: rngGen, rng: rngGen,
...@@ -335,81 +326,10 @@ func (tnm *testNetworkManager) GetInstance() *network.Instance { ...@@ -335,81 +326,10 @@ func (tnm *testNetworkManager) GetInstance() *network.Instance {
return tnm.instance return tnm.instance
} }
type mockUserStore struct{} type mockReporter struct{}
func (m mockUserStore) PortableUserInfo() user.Info {
//TODO implement me
panic("implement me")
}
func (m mockUserStore) GetUsername() (string, error) {
//TODO implement me
panic("implement me")
}
func (m mockUserStore) GetReceptionRegistrationValidationSignature() []byte {
//TODO implement me
panic("implement me")
}
type mockComms struct {
udHost *connect.Host
}
func (m mockComms) SendRegisterUser(host *connect.Host, message *pb.UDBUserRegistration) (*messages.Ack, error) { func (m mockReporter) Report(priority int, category, evtType, details string) {
//TODO implement me return
panic("implement me")
}
func (m mockComms) SendRegisterFact(host *connect.Host, message *pb.FactRegisterRequest) (*pb.FactRegisterResponse, error) {
//TODO implement me
panic("implement me")
}
func (m mockComms) SendConfirmFact(host *connect.Host, message *pb.FactConfirmRequest) (*messages.Ack, error) {
//TODO implement me
panic("implement me")
}
func (m mockComms) SendRemoveFact(host *connect.Host, message *pb.FactRemovalRequest) (*messages.Ack, error) {
//TODO implement me
panic("implement me")
}
func (m mockComms) SendRemoveUser(host *connect.Host, message *pb.FactRemovalRequest) (*messages.Ack, error) {
//TODO implement me
panic("implement me")
}
func (m *mockComms) AddHost(hid *id.ID, address string, cert []byte, params connect.HostParams) (host *connect.Host, err error) {
h, err := connect.NewHost(hid, address, cert, params)
if err != nil {
return nil, err
}
m.udHost = h
return h, nil
}
func (m mockComms) GetHost(hostId *id.ID) (*connect.Host, bool) {
return m.udHost, true
}
type mockE2e struct {
grp *cyclic.Group
}
func (m mockE2e) GetHistoricalDHPubkey() *cyclic.Int {
return m.grp.NewInt(6)
}
func (m mockE2e) GetReceptionID() *id.ID {
//TODO implement me
panic("implement me")
}
func (m mockE2e) GetGroup() *cyclic.Group {
return getGroup()
} }
type mockResponse struct { type mockResponse struct {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment