public void Process(SenderKeyName senderKeyName, SenderKeyDistributionMessage senderKeyDistributionMessage) { lock (GroupCipher.LOCK) { var senderKeyRecord = _senderKeyStore.LoadSenderKey(senderKeyName); senderKeyRecord.AddSenderKeyState(senderKeyDistributionMessage.Id, senderKeyDistributionMessage.Iteration, senderKeyDistributionMessage.ChainKey, senderKeyDistributionMessage.SignatureKey); _senderKeyStore.StoreSenderKey(senderKeyName, senderKeyRecord); } }
public void TestNoSession() { var aliceStore = new InMemorySenderKeyStore(); var bobStore = new InMemorySenderKeyStore(); var aliceSessionBuilder = new GroupSessionBuilder(aliceStore); var bobSessionBuilder = new GroupSessionBuilder(bobStore); var aliceGroupCipher = new GroupCipher(aliceStore, GROUP_SENDER); var bobGroupCipher = new GroupCipher(bobStore, GROUP_SENDER); var sentAliceDistributionMessage = aliceSessionBuilder.Create(GROUP_SENDER); var receivedAliceDistributionMessage = new SenderKeyDistributionMessage(sentAliceDistributionMessage.Serialize()); bobSessionBuilder.Process(GROUP_SENDER, receivedAliceDistributionMessage); var ciphertextFromAlice = aliceGroupCipher.Encrypt (Encoding.UTF8.GetBytes ("smert ze smert")); try { var plaintextFromAlice = bobGroupCipher.Decrypt(ciphertextFromAlice); throw new InvalidOperationException("Should be no session!"); } catch (NoSessionException e) { Assert.Pass (); } }