Skip to content
Snippets Groups Projects
Commit a58f03c8 authored by Jake Taylor's avatar Jake Taylor :lips:
Browse files

Merge branch 'restructure' into 'api2.0'

# Conflicts:
#   e2e/parse/firstMessagePart_test.go
#   e2e/parse/messagePart_test.go
#   e2e/parse/partition_test.go
#   e2e/sendUnsafe_test.go
parents 41a9f645 e8563e29
No related branches found
No related tags found
3 merge requests!510Release,!226WIP: Api2.0,!207WIP: Client Restructure
...@@ -9,6 +9,7 @@ package parse ...@@ -9,6 +9,7 @@ package parse
import ( import (
"encoding/binary" "encoding/binary"
"fmt"
"time" "time"
jww "github.com/spf13/jwalterweatherman" jww "github.com/spf13/jwalterweatherman"
...@@ -43,6 +44,9 @@ func newFirstMessagePart(mt catalog.MessageType, id uint32, numParts uint8, ...@@ -43,6 +44,9 @@ func newFirstMessagePart(mt catalog.MessageType, id uint32, numParts uint8,
// Create the message structure // Create the message structure
m := firstMessagePartFromBytes(make([]byte, size)) m := firstMessagePartFromBytes(make([]byte, size))
fmt.Printf("len of contents: %d"+
"\nsize: %d\n"+
"len m.contents: %d\n", len(contents), size, len(m.Contents))
// Set the message type // Set the message type
binary.BigEndian.PutUint32(m.Type, uint32(mt)) binary.BigEndian.PutUint32(m.Type, uint32(mt))
......
...@@ -43,8 +43,7 @@ func Test_newFirstMessagePart(t *testing.T) { ...@@ -43,8 +43,7 @@ func Test_newFirstMessagePart(t *testing.T) {
1077, 1077,
2, 2,
time.Unix(1609786229, 0).UTC(), time.Unix(1609786229, 0).UTC(),
testStr, []byte{'t', 'e', 's', 't', 'i', 'n', 'g', 's', 't', 'r', 'i', 'n', 'g'}, len(expectedFMP.Data),
len(testStr)+22,
) )
gotTime := fmp.getTimestamp() gotTime := fmp.getTimestamp()
......
...@@ -26,8 +26,7 @@ var expectedMP = messagePart{ ...@@ -26,8 +26,7 @@ var expectedMP = messagePart{
// Tests that a new function part is successfully created. // Tests that a new function part is successfully created.
func Test_newMessagePart(t *testing.T) { func Test_newMessagePart(t *testing.T) {
testStr := []byte{'t', 'e', 's', 't', 'i', 'n', 'g'} goTmp := newMessagePart(32, 6, []byte{'t', 'e', 's', 't', 'i', 'n', 'g'}, len(expectedMP.Data))
goTmp := newMessagePart(32, 6, testStr, len(testStr)+8)
if !reflect.DeepEqual(goTmp, expectedMP) { if !reflect.DeepEqual(goTmp, expectedMP) {
t.Errorf("MessagePart received and MessagePart expected do not match."+ t.Errorf("MessagePart received and MessagePart expected do not match."+
"\nexpected: %#v\nreceived: %#v", expectedMP, goTmp) "\nexpected: %#v\nreceived: %#v", expectedMP, goTmp)
......
...@@ -69,8 +69,8 @@ func TestPartitioner_Partition(t *testing.T) { ...@@ -69,8 +69,8 @@ func TestPartitioner_Partition(t *testing.T) {
// Test that Partitioner.HandlePartition can handle a message part. // Test that Partitioner.HandlePartition can handle a message part.
func TestPartitioner_HandlePartition(t *testing.T) { func TestPartitioner_HandlePartition(t *testing.T) {
p := NewPartitioner(versioned.NewKV(ekv.MakeMemstore()), 256) p := NewPartitioner(versioned.NewKV(ekv.MakeMemstore()), len(ipsumTestStr))
m := newMessagePart(1107, 1, []byte(ipsumTestStr), len(ipsumTestStr)+32) m := newMessagePart(1107, 1, []byte(ipsumTestStr), len(ipsumTestStr)+headerLen)
_, _ = p.HandlePartition( _, _ = p.HandlePartition(
&id.DummyUser, &id.DummyUser,
...@@ -83,8 +83,7 @@ func TestPartitioner_HandlePartition(t *testing.T) { ...@@ -83,8 +83,7 @@ func TestPartitioner_HandlePartition(t *testing.T) {
func TestPartitioner_HandleFirstPartition(t *testing.T) { func TestPartitioner_HandleFirstPartition(t *testing.T) {
p := NewPartitioner(versioned.NewKV(ekv.MakeMemstore()), 256) p := NewPartitioner(versioned.NewKV(ekv.MakeMemstore()), 256)
m := newFirstMessagePart( m := newFirstMessagePart(
catalog.XxMessage, 1107, 1, netTime.Now(), []byte(ipsumTestStr), catalog.XxMessage, 1107, 1, netTime.Now(), []byte(ipsumTestStr), len([]byte(ipsumTestStr))+firstHeaderLen)
len(ipsumTestStr)+32)
_, _ = p.HandlePartition( _, _ = p.HandlePartition(
&id.DummyUser, &id.DummyUser,
......
...@@ -7,85 +7,102 @@ ...@@ -7,85 +7,102 @@
package e2e package e2e
// import (
//func TestManager_SendUnsafe(t *testing.T) { "gitlab.com/elixxir/client/catalog"
// streamGen := fastRNG.NewStreamGenerator(12, 1024, csprng.NewSystemRNG) "gitlab.com/elixxir/client/e2e/parse"
// rng := streamGen.GetStream() "gitlab.com/elixxir/client/e2e/ratchet"
// defer rng.Close() "gitlab.com/elixxir/client/e2e/receive"
// netHandler := newMockCmixHandler() "gitlab.com/elixxir/client/e2e/rekey"
// "gitlab.com/elixxir/client/storage/versioned"
// // Generate new E2E manager dh "gitlab.com/elixxir/crypto/diffieHellman"
// myKv := versioned.NewKV(ekv.MakeMemstore()) "gitlab.com/elixxir/crypto/fastRNG"
// myID := id.NewIdFromString("myID", id.User, t) "gitlab.com/elixxir/ekv"
// myNet := newMockCmix(myID, netHandler, t) "gitlab.com/xx_network/crypto/csprng"
// m1 := &manager{ "gitlab.com/xx_network/primitives/id"
// Switchboard: receive.New(), "testing"
// partitioner: parse.NewPartitioner(myKv, myNet.GetMaxMessageLength()), )
// net: myNet,
// myID: myID, func TestManager_SendUnsafe(t *testing.T) {
// events: mockEventsManager{}, streamGen := fastRNG.NewStreamGenerator(12,
// grp: myNet.GetInstance().GetE2EGroup(), 1024, csprng.NewSystemRNG)
// rekeyParams: rekey.GetDefaultParams(), rng := streamGen.GetStream()
// } defer rng.Close()
// netHandler := newMockCmixHandler()
// myPrivKey := dh.GeneratePrivateKey(
// dh.DefaultPrivateKeyLength, m1.grp, rng) // Generate new E2E manager
// err := ratchet.New(myKv, myID, myPrivKey, m1.grp) myKv := versioned.NewKV(ekv.MakeMemstore())
// if err != nil { myID := id.NewIdFromString("myID", id.User, t)
// t.Errorf("Failed to generate new ratchet: %+v", err) myNet := newMockCmix(myID, netHandler, t)
// } m1 := &manager{
// Switchboard: receive.New(),
// myFpGen := &fpGenerator{m1} partitioner: parse.NewPartitioner(myKv, myNet.GetMaxMessageLength()),
// myServices := newMockServices() net: myNet,
// myID: myID,
// m1.Ratchet, err = ratchet.Load( events: mockEventsManager{},
// myKv, myID, m1.grp, myFpGen, myServices, streamGen) grp: myNet.GetInstance().GetE2EGroup(),
// rekeyParams: rekey.GetDefaultParams(),
// // Generate new E2E manager }
// partnerKv := versioned.NewKV(ekv.MakeMemstore())
// partnerID := id.NewIdFromString("partnerID", id.User, t) myPrivKey := dh.GeneratePrivateKey(
// partnerNet := newMockCmix(partnerID, netHandler, t) dh.DefaultPrivateKeyLength, m1.grp, rng)
// m2 := &manager{ err := ratchet.New(myKv, myID, myPrivKey, m1.grp)
// Switchboard: receive.New(), if err != nil {
// partitioner: parse.NewPartitioner(partnerKv, partnerNet.GetMaxMessageLength()), t.Errorf("Failed to generate new ratchet: %+v", err)
// net: partnerNet, }
// myID: partnerID,
// events: mockEventsManager{}, myFpGen := &fpGenerator{m1}
// grp: partnerNet.GetInstance().GetE2EGroup(), myServices := newMockServices()
// rekeyParams: rekey.GetDefaultParams(),
// } m1.Ratchet, err = ratchet.Load(
// myKv, myID, m1.grp, myFpGen, myServices, streamGen)
// receiveChan := make(chan receive.Message, 10)
// m2.Switchboard.RegisterListener(partnerID, catalog.NoType, &mockListener{receiveChan}) // Generate new E2E manager
// partnerKv := versioned.NewKV(ekv.MakeMemstore())
// partnerPrivKey := dh.GeneratePrivateKey( partnerID := id.NewIdFromString("partnerID", id.User, t)
// dh.DefaultPrivateKeyLength, m2.grp, rng) partnerNet := newMockCmix(partnerID, netHandler, t)
// err = ratchet.New(partnerKv, partnerID, partnerPrivKey, m2.grp) m2 := &manager{
// if err != nil { Switchboard: receive.New(),
// t.Errorf("Failed to generate new ratchet: %+v", err) partitioner: parse.NewPartitioner(partnerKv, partnerNet.GetMaxMessageLength()),
// } net: partnerNet,
// myID: partnerID,
// partnerFpGen := &fpGenerator{m2} events: mockEventsManager{},
// partnerServices := newMockServices() grp: partnerNet.GetInstance().GetE2EGroup(),
// rekeyParams: rekey.GetDefaultParams(),
// m1.Ratchet, err = ratchet.Load( }
// partnerKv, partnerID, m2.grp, partnerFpGen, partnerServices, streamGen)
// receiveChan := make(chan receive.Message, 10)
// // Generate partner identity and add partner m2.Switchboard.RegisterListener(myID, catalog.NoType, &mockListener{receiveChan})
// partnerPubKey, partnerSidhPubKey, mySidhPrivKey, sessionParams :=
// genPartnerKeys(partnerPrivKey, m1.grp, rng, t) partnerPrivKey := dh.GeneratePrivateKey(
// _, err = m1.Ratchet.AddPartner(partnerID, partnerPubKey, myPrivKey, dh.DefaultPrivateKeyLength, m2.grp, rng)
// partnerSidhPubKey, mySidhPrivKey, sessionParams, sessionParams) err = ratchet.New(partnerKv, partnerID, partnerPrivKey, m2.grp)
// if err != nil { if err != nil {
// t.Errorf("Failed to add partner: %+v", err) t.Errorf("Failed to generate new ratchet: %+v", err)
// } }
//
// payload := []byte("My Payload") partnerFpGen := &fpGenerator{m2}
// p := GetDefaultParams() partnerServices := newMockServices()
//
// m1.Ratchet, err = ratchet.Load(
// _, _, err = m1.sendUnsafe(catalog.NoType, partnerID, payload, p) partnerKv, partnerID, m2.grp, partnerFpGen, partnerServices, streamGen)
// if err != nil {
// t.Fatalf("sendUnsafe error: %v", err) m1.EnableUnsafeReception()
// } m2.EnableUnsafeReception()
//}
// Generate partner identity and add partner
partnerPubKey, partnerSidhPubKey, mySidhPrivKey, sessionParams :=
genPartnerKeys(partnerPrivKey, m1.grp, rng, t)
_, err = m1.Ratchet.AddPartner(partnerID, partnerPubKey, myPrivKey,
partnerSidhPubKey, mySidhPrivKey, sessionParams, sessionParams)
if err != nil {
t.Errorf("Failed to add partner: %+v", err)
}
payload := []byte("My Payload")
p := GetDefaultParams()
_, _, err = m1.sendUnsafe(catalog.NoType, partnerID, payload, p)
if err != nil {
t.Fatalf("sendUnsafe error: %v", err)
}
}
...@@ -126,12 +126,14 @@ func (m *mockServices) DeleteService( ...@@ -126,12 +126,14 @@ func (m *mockServices) DeleteService(
type mockCmixHandler struct { type mockCmixHandler struct {
processorMap map[format.Fingerprint]message.Processor processorMap map[format.Fingerprint]message.Processor
serviceMap map[string]message.Processor
sync.Mutex sync.Mutex
} }
func newMockCmixHandler() *mockCmixHandler { func newMockCmixHandler() *mockCmixHandler {
return &mockCmixHandler{ return &mockCmixHandler{
processorMap: make(map[format.Fingerprint]message.Processor), processorMap: make(map[format.Fingerprint]message.Processor),
serviceMap: make(map[string]message.Processor),
} }
} }
...@@ -172,7 +174,7 @@ func (m *mockCmix) GetMaxMessageLength() int { ...@@ -172,7 +174,7 @@ func (m *mockCmix) GetMaxMessageLength() int {
return msg.ContentsSize() return msg.ContentsSize()
} }
func (m *mockCmix) Send(_ *id.ID, fp format.Fingerprint, _ message.Service, func (m *mockCmix) Send(_ *id.ID, fp format.Fingerprint, srv message.Service,
payload, mac []byte, _ cmix.CMIXParams) (id.Round, ephemeral.Id, error) { payload, mac []byte, _ cmix.CMIXParams) (id.Round, ephemeral.Id, error) {
m.handler.Lock() m.handler.Lock()
defer m.handler.Unlock() defer m.handler.Unlock()
...@@ -182,16 +184,20 @@ func (m *mockCmix) Send(_ *id.ID, fp format.Fingerprint, _ message.Service, ...@@ -182,16 +184,20 @@ func (m *mockCmix) Send(_ *id.ID, fp format.Fingerprint, _ message.Service,
msg.SetMac(mac) msg.SetMac(mac)
msg.SetKeyFP(fp) msg.SetKeyFP(fp)
if m.handler.processorMap[fp] == nil { if m.handler.processorMap[fp] != nil {
m.handler.processorMap[fp].Process(
msg, receptionID.EphemeralIdentity{}, rounds.Round{})
return 0, ephemeral.Id{}, nil
} else if m.handler.serviceMap[srv.Tag] != nil {
m.handler.serviceMap[srv.Tag].Process(
msg, receptionID.EphemeralIdentity{}, rounds.Round{})
return 0, ephemeral.Id{}, nil
}
m.t.Errorf("No processor found for fingerprint %s", fp) m.t.Errorf("No processor found for fingerprint %s", fp)
return 0, ephemeral.Id{}, return 0, ephemeral.Id{},
errors.Errorf("No processor found for fingerprint %s", fp) errors.Errorf("No processor found for fingerprint %s", fp)
}
m.handler.processorMap[fp].Process(
msg, receptionID.EphemeralIdentity{}, rounds.Round{})
return 0, ephemeral.Id{}, nil
} }
func (m *mockCmix) SendMany([]cmix.TargetedCmixMessage, cmix.CMIXParams) (id.Round, []ephemeral.Id, error) { func (m *mockCmix) SendMany([]cmix.TargetedCmixMessage, cmix.CMIXParams) (id.Round, []ephemeral.Id, error) {
...@@ -214,8 +220,14 @@ func (m *mockCmix) DeleteFingerprint(_ *id.ID, fp format.Fingerprint) { ...@@ -214,8 +220,14 @@ func (m *mockCmix) DeleteFingerprint(_ *id.ID, fp format.Fingerprint) {
m.handler.Unlock() m.handler.Unlock()
} }
func (m *mockCmix) AddService(myId *id.ID, srv message.Service, proc message.Processor) {
m.handler.Lock()
m.handler.serviceMap[srv.Tag] = proc
m.handler.Unlock()
}
func (m *mockCmix) DeleteClientFingerprints(*id.ID) {} func (m *mockCmix) DeleteClientFingerprints(*id.ID) {}
func (m *mockCmix) AddService(*id.ID, message.Service, message.Processor) {}
func (m *mockCmix) DeleteService(*id.ID, message.Service, message.Processor) {} func (m *mockCmix) DeleteService(*id.ID, message.Service, message.Processor) {}
func (m *mockCmix) DeleteClientService(*id.ID) {} func (m *mockCmix) DeleteClientService(*id.ID) {}
func (m *mockCmix) TrackServices(message.ServicesTracker) {} func (m *mockCmix) TrackServices(message.ServicesTracker) {}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment