Throw NoSessionException in GroupCipher decrypt()
This commit is contained in:
parent
3d9c944288
commit
8335b0ef03
|
@ -102,7 +102,7 @@ public class GroupCipher {
|
||||||
* @throws DuplicateMessageException
|
* @throws DuplicateMessageException
|
||||||
*/
|
*/
|
||||||
public byte[] decrypt(byte[] senderKeyMessageBytes)
|
public byte[] decrypt(byte[] senderKeyMessageBytes)
|
||||||
throws LegacyMessageException, DuplicateMessageException, InvalidMessageException
|
throws LegacyMessageException, DuplicateMessageException, InvalidMessageException, NoSessionException
|
||||||
{
|
{
|
||||||
return decrypt(senderKeyMessageBytes, new NullDecryptionCallback());
|
return decrypt(senderKeyMessageBytes, new NullDecryptionCallback());
|
||||||
}
|
}
|
||||||
|
@ -123,11 +123,17 @@ public class GroupCipher {
|
||||||
* @throws DuplicateMessageException
|
* @throws DuplicateMessageException
|
||||||
*/
|
*/
|
||||||
public byte[] decrypt(byte[] senderKeyMessageBytes, DecryptionCallback callback)
|
public byte[] decrypt(byte[] senderKeyMessageBytes, DecryptionCallback callback)
|
||||||
throws LegacyMessageException, InvalidMessageException, DuplicateMessageException
|
throws LegacyMessageException, InvalidMessageException, DuplicateMessageException,
|
||||||
|
NoSessionException
|
||||||
{
|
{
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
try {
|
try {
|
||||||
SenderKeyRecord record = senderKeyStore.loadSenderKey(senderKeyId);
|
SenderKeyRecord record = senderKeyStore.loadSenderKey(senderKeyId);
|
||||||
|
|
||||||
|
if (record.isEmpty()) {
|
||||||
|
throw new NoSessionException("No sender key for: " + senderKeyId);
|
||||||
|
}
|
||||||
|
|
||||||
SenderKeyMessage senderKeyMessage = new SenderKeyMessage(senderKeyMessageBytes);
|
SenderKeyMessage senderKeyMessage = new SenderKeyMessage(senderKeyMessageBytes);
|
||||||
SenderKeyState senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId());
|
SenderKeyState senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId());
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,30 @@ public class GroupCipherTest extends TestCase {
|
||||||
private static final AxolotlAddress SENDER_ADDRESS = new AxolotlAddress("+14150001111", 1);
|
private static final AxolotlAddress SENDER_ADDRESS = new AxolotlAddress("+14150001111", 1);
|
||||||
private static final SenderKeyName GROUP_SENDER = new SenderKeyName("nihilist history reading group", SENDER_ADDRESS);
|
private static final SenderKeyName GROUP_SENDER = new SenderKeyName("nihilist history reading group", SENDER_ADDRESS);
|
||||||
|
|
||||||
|
public void testNoSession() throws InvalidMessageException, LegacyMessageException, NoSessionException, DuplicateMessageException {
|
||||||
|
InMemorySenderKeyStore aliceStore = new InMemorySenderKeyStore();
|
||||||
|
InMemorySenderKeyStore bobStore = new InMemorySenderKeyStore();
|
||||||
|
|
||||||
|
GroupSessionBuilder aliceSessionBuilder = new GroupSessionBuilder(aliceStore);
|
||||||
|
GroupSessionBuilder bobSessionBuilder = new GroupSessionBuilder(bobStore);
|
||||||
|
|
||||||
|
GroupCipher aliceGroupCipher = new GroupCipher(aliceStore, GROUP_SENDER);
|
||||||
|
GroupCipher bobGroupCipher = new GroupCipher(bobStore, GROUP_SENDER);
|
||||||
|
|
||||||
|
SenderKeyDistributionMessage sentAliceDistributionMessage = aliceSessionBuilder.create(GROUP_SENDER);
|
||||||
|
SenderKeyDistributionMessage receivedAliceDistributionMessage = new SenderKeyDistributionMessage(sentAliceDistributionMessage.serialize());
|
||||||
|
|
||||||
|
// bobSessionBuilder.process(GROUP_SENDER, receivedAliceDistributionMessage);
|
||||||
|
|
||||||
|
byte[] ciphertextFromAlice = aliceGroupCipher.encrypt("smert ze smert".getBytes());
|
||||||
|
try {
|
||||||
|
byte[] plaintextFromAlice = bobGroupCipher.decrypt(ciphertextFromAlice);
|
||||||
|
throw new AssertionError("Should be no session!");
|
||||||
|
} catch (NoSessionException e) {
|
||||||
|
// good
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void testBasicEncryptDecrypt()
|
public void testBasicEncryptDecrypt()
|
||||||
throws LegacyMessageException, DuplicateMessageException, InvalidMessageException, NoSessionException
|
throws LegacyMessageException, DuplicateMessageException, InvalidMessageException, NoSessionException
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue