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
Branches
Tags
2 merge requests!510Release,!260made ud package use e2e.ReceptionID
package ud
import (
"gitlab.com/elixxir/client/cmix"
"gitlab.com/elixxir/client/e2e"
"gitlab.com/elixxir/client/event"
"gitlab.com/elixxir/client/single"
"gitlab.com/elixxir/client/storage"
"gitlab.com/elixxir/client/xxdk"
"gitlab.com/elixxir/comms/client"
"gitlab.com/elixxir/crypto/fastRNG"
)
......@@ -23,10 +21,10 @@ type CMix interface {
// relevant to what is used in this package.
type E2E interface {
GetReceptionIdentity() xxdk.ReceptionIdentity
GetCmix() cmix.Client
GetCmix() CMix
GetE2E() e2e.Handler
GetEventReporter() event.Reporter
GetComms() *client.Comms
GetComms() Comms
GetRng() *fastRNG.StreamGenerator
GetStorage() storage.Session
GetTransmissionIdentity() xxdk.TransmissionIdentity
......
......@@ -65,8 +65,8 @@ func TestManager_Lookup(t *testing.T) {
defer mockListener.Stop()
r := m.e2e.GetGroup().NewInt(1)
m.e2e.GetGroup().Random(r)
r := m.e2e.GetE2E().GetGroup().NewInt(1)
m.e2e.GetE2E().GetGroup().Random(r)
s := ""
jsonable, err := r.MarshalJSON()
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) {
isCorrect("testUser", c.msg, m, t)
// Verify the signed identity data
pubKey := m.user.PortableUserInfo().ReceptionRSA.GetPublic()
err = rsa.Verify(pubKey, hash.CMixHash, c.msg.IdentityRegistration.Digest(),
pubKeyPem := m.e2e.GetReceptionIdentity().RSAPrivatePem
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)
if err != nil {
t.Errorf("Failed to verify signed identity data: %+v", err)
......@@ -52,7 +57,7 @@ func TestManager_register(t *testing.T) {
// Verify the signed fact
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)
if err != nil {
t.Errorf("Failed to verify signed fact data: %+v", err)
......@@ -62,17 +67,23 @@ func TestManager_register(t *testing.T) {
// isCorrect checks if the UDBUserRegistration has all the expected fields minus
// any signatures.
func isCorrect(username string, msg *pb.UDBUserRegistration, m *Manager, t *testing.T) {
userInfo := m.user.PortableUserInfo()
if !bytes.Equal(m.user.GetReceptionRegistrationValidationSignature(), msg.PermissioningSignature) {
if !bytes.Equal(m.registrationValidationSignature, msg.PermissioningSignature) {
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 {
t.Errorf("RSAPublicPem incorrect.\n\texpected: %v\n\treceived: %v",
string(rsa.CreatePublicKeyPem(userInfo.TransmissionRSA.GetPublic())),
string(pubKeyPem),
msg.RSAPublicPem)
}
......@@ -81,19 +92,27 @@ func isCorrect(username string, msg *pb.UDBUserRegistration, m *Manager, t *test
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",
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",
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",
userInfo.TransmissionID.Marshal(), msg.Frs.UID)
identity.ID.Marshal(), msg.Frs.UID)
}
if !reflect.DeepEqual(&pb.Fact{Fact: username}, msg.Frs.Fact) {
......
......@@ -71,7 +71,7 @@ func TestManager_Search(t *testing.T) {
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)
if err != nil {
t.Fatalf("Search() returned an error: %+v", err)
......
......@@ -20,19 +20,15 @@ import (
"gitlab.com/elixxir/client/storage/user"
"gitlab.com/elixxir/client/storage/versioned"
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/cyclic"
"gitlab.com/elixxir/crypto/fastRNG"
"gitlab.com/elixxir/ekv"
"gitlab.com/elixxir/primitives/format"
"gitlab.com/xx_network/comms/messages"
"gitlab.com/xx_network/crypto/csprng"
"gitlab.com/xx_network/crypto/large"
"gitlab.com/xx_network/crypto/signature/rsa"
"gitlab.com/xx_network/primitives/id/ephemeral"
"gitlab.com/xx_network/primitives/utils"
"io"
"math/rand"
"testing"
......@@ -53,17 +49,6 @@ const dhKeyEnc = `hQj4FKeaQDt34eO/BQe5OSk571WMQBu4YNqMQ0TFeuzjzCM9lLMuOsQhcyjZcI
const lookupRequestEnc = `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`
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())
udStore, err := store.NewOrLoadStore(kv)
if err != nil {
......@@ -71,12 +56,18 @@ func newTestManager(t *testing.T) (*Manager, *testNetworkManager) {
}
rngGen := fastRNG.NewStreamGenerator(1000, 10, csprng.NewSystemRNG)
stream := rngGen.GetStream()
privKey, err := rsa.GenerateKey(stream, 1024)
stream.Close()
// Create our Manager object
m := &Manager{
e2e: mockE2e{grp: getGroup()},
e2e: mockE2e{
grp: getGroup(),
t: t,
key: privKey,
},
events: event.NewEventManager(),
user: mockUser{testing: t, key: key},
store: udStore,
comms: &mockComms{},
rng: rngGen,
......@@ -335,81 +326,10 @@ func (tnm *testNetworkManager) GetInstance() *network.Instance {
return tnm.instance
}
type mockUserStore 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
}
type mockReporter struct{}
func (m mockComms) SendRegisterUser(host *connect.Host, message *pb.UDBUserRegistration) (*messages.Ack, error) {
//TODO implement me
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()
func (m mockReporter) Report(priority int, category, evtType, details string) {
return
}
type mockResponse struct {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment