public async Task CrossSecurityLevelAddressBookExchange() { var lowLevelCrypto = new DesktopCryptoProvider(new Level1()); var lowLevelEndpoint = Valid.GenerateOwnEndpoint(lowLevelCrypto); var highLevelCrypto = new DesktopCryptoProvider(new Level2()); var highLevelEndpoint = Valid.GenerateOwnEndpoint(highLevelCrypto); await this.TestSendAndReceiveAsync(lowLevelCrypto, lowLevelEndpoint, highLevelCrypto, highLevelEndpoint); await this.TestSendAndReceiveAsync(highLevelCrypto, highLevelEndpoint, lowLevelCrypto, lowLevelEndpoint); }
public void ExtractEndpointDetectsTampering() { var ownContact = Valid.GenerateOwnEndpoint(this.desktopCryptoProvider); var entry = ownContact.CreateAddressBookEntry(this.desktopCryptoProvider); var untamperedEndpoint = entry.SerializedEndpoint.CopyBuffer(); for (int i = 0; i < 100; i++) { TestUtilities.ApplyFuzzing(entry.SerializedEndpoint, 1); Assert.Throws <BadAddressBookEntryException>(() => entry.ExtractEndpoint(this.desktopCryptoProvider)); untamperedEndpoint.CopyBuffer(entry.SerializedEndpoint); } }
public async Task CrossSecurityLevelAddressBookExchange() { var lowLevelCrypto = new CryptoSettings(SecurityLevel.Minimum); var lowLevelEndpoint = Valid.GenerateOwnEndpoint(lowLevelCrypto); var highLevelCrypto = new CryptoSettings(SecurityLevel.Minimum) { AsymmetricKeySize = 2048 }; var highLevelEndpoint = Valid.GenerateOwnEndpoint(highLevelCrypto); await this.TestSendAndReceiveAsync(lowLevelCrypto, lowLevelEndpoint, highLevelCrypto, highLevelEndpoint); await this.TestSendAndReceiveAsync(highLevelCrypto, highLevelEndpoint, lowLevelCrypto, lowLevelEndpoint); }
public void PostAndReceiveAsync() { Task.Run(async delegate { var sender = Valid.GenerateOwnEndpoint(); var receiver = Valid.GenerateOwnEndpoint(); var cloudStorage = new Mocks.CloudBlobStorageProviderMock(); var inboxMock = new Mocks.InboxHttpHandlerMock(new[] { receiver.PublicEndpoint }); var cryptoProvider = new Mocks.MockCryptoProvider(); var sentMessage = Valid.Message; await this.SendMessageAsync(cloudStorage, inboxMock, cryptoProvider, sender, receiver.PublicEndpoint, sentMessage); var messages = await this.ReceiveMessageAsync(cloudStorage, inboxMock, new Mocks.MockCryptoProvider(), receiver); Assert.That(messages.Count, Is.EqualTo(1)); var receivedMessage = messages.Single(); Assert.That(receivedMessage.Payload.ContentType, Is.EqualTo(sentMessage.ContentType)); Assert.That(receivedMessage.Payload.Content, Is.EqualTo(sentMessage.Content)); }).GetAwaiter().GetResult(); }
public void PayloadTamperingTests() { Task.Run(async delegate { var sender = Valid.GenerateOwnEndpoint(this.desktopCryptoProvider); var receiver = Valid.GenerateOwnEndpoint(this.desktopCryptoProvider); for (int i = 0; i < 100; i++) { var cloudStorage = new Mocks.CloudBlobStorageProviderMock(); var inboxMock = new Mocks.InboxHttpHandlerMock(new[] { receiver.PublicEndpoint }); var sentMessage = Valid.Message; await this.SendMessageAsync(cloudStorage, inboxMock, this.desktopCryptoProvider, sender, receiver.PublicEndpoint, sentMessage); // Tamper with the payload itself. TestUtilities.ApplyFuzzing(cloudStorage.Blobs.Single().Value, 1); Assert.Throws <InvalidMessageException>(() => this.ReceiveMessageAsync(cloudStorage, inboxMock, this.desktopCryptoProvider, receiver).GetAwaiter().GetResult()); } }).GetAwaiter().GetResult(); }
public void PayloadReferenceTamperingTests() { Task.Run(async delegate { var sender = Valid.GenerateOwnEndpoint(this.desktopCryptoProvider); var receiver = Valid.GenerateOwnEndpoint(this.desktopCryptoProvider); for (int i = 0; i < 100; i++) { var cloudStorage = new Mocks.CloudBlobStorageProviderMock(); var inboxMock = new Mocks.InboxHttpHandlerMock(new[] { receiver.PublicEndpoint }); var sentMessage = Valid.Message; await this.SendMessageAsync(cloudStorage, inboxMock, this.desktopCryptoProvider, sender, receiver.PublicEndpoint, sentMessage); // Tamper with the payload reference. TestUtilities.ApplyFuzzing(inboxMock.Inboxes[receiver.PublicEndpoint][0].Item2, 1); var receivedMessages = await this.ReceiveMessageAsync(cloudStorage, inboxMock, this.desktopCryptoProvider, receiver, expectMessage: false); Assert.AreEqual(0, receivedMessages.Count); } }).GetAwaiter().GetResult(); }