diff --git a/e2e/parse/firstMessagePart.go b/e2e/parse/firstMessagePart.go index ae907af3d2b921f69a3770f1ad0aa8e1da72541d..c862b50d24fd1c676cd69c8653279124c38af059 100644 --- a/e2e/parse/firstMessagePart.go +++ b/e2e/parse/firstMessagePart.go @@ -9,6 +9,7 @@ package parse import ( "encoding/binary" + "fmt" "time" jww "github.com/spf13/jwalterweatherman" @@ -43,6 +44,9 @@ func newFirstMessagePart(mt catalog.MessageType, id uint32, numParts uint8, // Create the message structure 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 binary.BigEndian.PutUint32(m.Type, uint32(mt)) diff --git a/e2e/parse/firstMessagePart_test.go b/e2e/parse/firstMessagePart_test.go index d1459191cf165ebaeb2e2248105097a57e3ece1c..5c4ef051440672031304602f192b38430c6fafe4 100644 --- a/e2e/parse/firstMessagePart_test.go +++ b/e2e/parse/firstMessagePart_test.go @@ -41,7 +41,7 @@ func Test_newFirstMessagePart(t *testing.T) { 1077, 2, time.Unix(1609786229, 0).UTC(), - []byte{'t', 'e', 's', 't', 'i', 'n', 'g', 's', 't', 'r', 'i', 'n', 'g'}, + []byte{'t', 'e', 's', 't', 'i', 'n', 'g', 's', 't', 'r', 'i', 'n', 'g'}, len(expectedFMP.Data), ) gotTime := fmp.getTimestamp() diff --git a/e2e/parse/messagePart_test.go b/e2e/parse/messagePart_test.go index 93c1bb83df372fcd456822bf7b984d8bb47ff937..adede5571164836de7c493f045767f03315eea9a 100644 --- a/e2e/parse/messagePart_test.go +++ b/e2e/parse/messagePart_test.go @@ -26,7 +26,7 @@ var expectedMP = messagePart{ // Tests that a new function part is successfully created. func Test_newMessagePart(t *testing.T) { - goTmp := newMessagePart(32, 6, []byte{'t', 'e', 's', 't', 'i', 'n', 'g'}) + goTmp := newMessagePart(32, 6, []byte{'t', 'e', 's', 't', 'i', 'n', 'g'}, len(expectedMP.Data)) if !reflect.DeepEqual(goTmp, expectedMP) { t.Errorf("MessagePart received and MessagePart expected do not match."+ "\nexpected: %#v\nreceived: %#v", expectedMP, goTmp) diff --git a/e2e/parse/partition_test.go b/e2e/parse/partition_test.go index e8440ef1a6f62b34ec4ef6a7378c56218157a88c..71b5338a16b9aa5b261b3368d5384dc51e02c970 100644 --- a/e2e/parse/partition_test.go +++ b/e2e/parse/partition_test.go @@ -69,7 +69,7 @@ func TestPartitioner_Partition(t *testing.T) { // Test that Partitioner.HandlePartition can handle a message part. func TestPartitioner_HandlePartition(t *testing.T) { p := NewPartitioner(versioned.NewKV(ekv.MakeMemstore()), len(ipsumTestStr)) - m := newMessagePart(1107, 1, []byte(ipsumTestStr)) + m := newMessagePart(1107, 1, []byte(ipsumTestStr), len(ipsumTestStr)+headerLen) _, _ = p.HandlePartition( &id.DummyUser, @@ -82,7 +82,7 @@ func TestPartitioner_HandlePartition(t *testing.T) { func TestPartitioner_HandleFirstPartition(t *testing.T) { p := NewPartitioner(versioned.NewKV(ekv.MakeMemstore()), len(ipsumTestStr)) m := newFirstMessagePart( - catalog.XxMessage, 1107, 1, netTime.Now(), []byte(ipsumTestStr)) + catalog.XxMessage, 1107, 1, netTime.Now(), []byte(ipsumTestStr), len([]byte(ipsumTestStr))+firstHeaderLen) _, _ = p.HandlePartition( &id.DummyUser, diff --git a/e2e/sendUnsafe_test.go b/e2e/sendUnsafe_test.go index ab8fac2b8ab44201c0dfa29f168a6768a6dc7150..d30e6e15f9c2f6e8673e2f790c83199045d0c9c2 100644 --- a/e2e/sendUnsafe_test.go +++ b/e2e/sendUnsafe_test.go @@ -23,7 +23,8 @@ import ( ) func TestManager_SendUnsafe(t *testing.T) { - streamGen := fastRNG.NewStreamGenerator(12, 1024, csprng.NewSystemRNG) + streamGen := fastRNG.NewStreamGenerator(12, + 1024, csprng.NewSystemRNG) rng := streamGen.GetStream() defer rng.Close() netHandler := newMockCmixHandler() @@ -70,7 +71,7 @@ func TestManager_SendUnsafe(t *testing.T) { } receiveChan := make(chan receive.Message, 10) - m2.Switchboard.RegisterListener(partnerID, catalog.NoType, &mockListener{receiveChan}) + m2.Switchboard.RegisterListener(myID, catalog.NoType, &mockListener{receiveChan}) partnerPrivKey := dh.GeneratePrivateKey( dh.DefaultPrivateKeyLength, m2.grp, rng) @@ -85,6 +86,9 @@ func TestManager_SendUnsafe(t *testing.T) { m1.Ratchet, err = ratchet.Load( partnerKv, partnerID, m2.grp, partnerFpGen, partnerServices, streamGen) + m1.EnableUnsafeReception() + m2.EnableUnsafeReception() + // Generate partner identity and add partner partnerPubKey, partnerSidhPubKey, mySidhPrivKey, sessionParams := genPartnerKeys(partnerPrivKey, m1.grp, rng, t) diff --git a/e2e/utils_test.go b/e2e/utils_test.go index 32a3d986b7a6c462d2636e79d73524356d574cab..0f84f037f132416f8ad0eb75d7faa9414cbde869 100644 --- a/e2e/utils_test.go +++ b/e2e/utils_test.go @@ -126,12 +126,14 @@ func (m *mockServices) DeleteService( type mockCmixHandler struct { processorMap map[format.Fingerprint]message.Processor + serviceMap map[string]message.Processor sync.Mutex } func newMockCmixHandler() *mockCmixHandler { return &mockCmixHandler{ processorMap: make(map[format.Fingerprint]message.Processor), + serviceMap: make(map[string]message.Processor), } } @@ -172,7 +174,7 @@ func (m *mockCmix) GetMaxMessageLength() int { 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) { m.handler.Lock() defer m.handler.Unlock() @@ -182,16 +184,20 @@ func (m *mockCmix) Send(_ *id.ID, fp format.Fingerprint, _ message.Service, msg.SetMac(mac) msg.SetKeyFP(fp) - if m.handler.processorMap[fp] == nil { - m.t.Errorf("No processor found for fingerprint %s", fp) - return 0, ephemeral.Id{}, - errors.Errorf("No processor found for fingerprint %s", fp) + 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.handler.processorMap[fp].Process( - msg, receptionID.EphemeralIdentity{}, rounds.Round{}) + m.t.Errorf("No processor found for fingerprint %s", fp) + return 0, ephemeral.Id{}, + errors.Errorf("No processor found for fingerprint %s", fp) - return 0, ephemeral.Id{}, nil } 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) { 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) AddService(*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) TrackServices(message.ServicesTracker) {}