aboutsummaryrefslogtreecommitdiff
path: root/android/olm-sdk/src/androidTest/java/org/matrix/olm/OlmGroupSessionTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/olm-sdk/src/androidTest/java/org/matrix/olm/OlmGroupSessionTest.java')
-rw-r--r--android/olm-sdk/src/androidTest/java/org/matrix/olm/OlmGroupSessionTest.java627
1 files changed, 0 insertions, 627 deletions
diff --git a/android/olm-sdk/src/androidTest/java/org/matrix/olm/OlmGroupSessionTest.java b/android/olm-sdk/src/androidTest/java/org/matrix/olm/OlmGroupSessionTest.java
deleted file mode 100644
index 69eb0e8..0000000
--- a/android/olm-sdk/src/androidTest/java/org/matrix/olm/OlmGroupSessionTest.java
+++ /dev/null
@@ -1,627 +0,0 @@
-/*
- * Copyright 2016 OpenMarket Ltd
- * Copyright 2016 Vector Creations Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.matrix.olm;
-
-import android.content.Context;
-import android.support.test.runner.AndroidJUnit4;
-import android.text.TextUtils;
-import android.util.Log;
-
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import static android.support.test.InstrumentationRegistry.getInstrumentation;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-@RunWith(AndroidJUnit4.class)
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class OlmGroupSessionTest {
- private static final String LOG_TAG = "OlmSessionTest";
- private final String FILE_NAME_SERIAL_OUT_SESSION = "SerialOutGroupSession";
- private final String FILE_NAME_SERIAL_IN_SESSION = "SerialInGroupSession";
-
- private static OlmManager mOlmManager;
- private static OlmOutboundGroupSession mAliceOutboundGroupSession;
- private static String mAliceSessionIdentifier;
- private static long mAliceMessageIndex;
- private static final String CLEAR_MESSAGE1 = "Hello!";
- private static String mAliceToBobMessage;
- private static OlmInboundGroupSession mBobInboundGroupSession;
- private static String mAliceOutboundSessionKey;
- private static String mBobSessionIdentifier;
- private static String mBobDecryptedMessage;
-
- @BeforeClass
- public static void setUpClass(){
- // load native lib
- mOlmManager = new OlmManager();
-
- String version = mOlmManager.getOlmLibVersion();
- assertNotNull(version);
- Log.d(LOG_TAG, "## setUpClass(): lib version="+version);
- }
-
- /**
- * Basic test:
- * - alice creates an outbound group session
- * - bob creates an inbound group session with alice's outbound session key
- * - alice encrypts a message with its session
- * - bob decrypts the encrypted message with its session
- * - decrypted message is identical to original alice message
- */
- @Test
- public void test01CreateOutboundSession() {
- // alice creates OUTBOUND GROUP SESSION
- try {
- mAliceOutboundGroupSession = new OlmOutboundGroupSession();
- } catch (OlmException e) {
- assertTrue("Exception in OlmOutboundGroupSession, Exception code=" + e.getExceptionCode(), false);
- }
- }
-
- @Test
- public void test02GetOutboundGroupSessionIdentifier() {
- // test session ID
- mAliceSessionIdentifier = null;
-
- try {
- mAliceSessionIdentifier = mAliceOutboundGroupSession.sessionIdentifier();
- } catch (Exception e) {
- assertTrue(e.getMessage(), false);
- }
-
- assertNotNull(mAliceSessionIdentifier);
- assertTrue(mAliceSessionIdentifier.length() > 0);
- }
-
- @Test
- public void test03GetOutboundGroupSessionKey() {
- // test session Key
- mAliceOutboundSessionKey = null;
-
- try {
- mAliceOutboundSessionKey = mAliceOutboundGroupSession.sessionKey();
- } catch (Exception e) {
- assertTrue(e.getMessage(), false);
- }
- assertNotNull(mAliceOutboundSessionKey);
- assertTrue(mAliceOutboundSessionKey.length() > 0);
- }
-
- @Test
- public void test04GetOutboundGroupMessageIndex() {
- // test message index before any encryption
- mAliceMessageIndex = mAliceOutboundGroupSession.messageIndex();
- assertTrue(0 == mAliceMessageIndex);
- }
-
- @Test
- public void test05OutboundGroupEncryptMessage() {
- // alice encrypts a message to bob
- try {
- mAliceToBobMessage = mAliceOutboundGroupSession.encryptMessage(CLEAR_MESSAGE1);
- } catch (Exception e) {
- assertTrue("Exception in bob encryptMessage, Exception code=" + e.getMessage(), false);
- }
- assertFalse(TextUtils.isEmpty(mAliceToBobMessage));
-
- // test message index after encryption is incremented
- mAliceMessageIndex = mAliceOutboundGroupSession.messageIndex();
- assertTrue(1 == mAliceMessageIndex);
- }
-
- @Test
- public void test06CreateInboundGroupSession() {
- // bob creates INBOUND GROUP SESSION with alice outbound key
- try {
- mBobInboundGroupSession = new OlmInboundGroupSession(mAliceOutboundSessionKey);
- } catch (OlmException e) {
- assertTrue("Exception in bob OlmInboundGroupSession, Exception code=" + e.getExceptionCode(), false);
- }
- }
-
- @Test
- public void test08GetInboundGroupSessionIdentifier() {
- // check both session identifiers are equals
- mBobSessionIdentifier = null;
-
- try {
- mBobSessionIdentifier = mBobInboundGroupSession.sessionIdentifier();
- } catch (Exception e) {
- assertTrue(e.getMessage(), false);
- }
- assertFalse(TextUtils.isEmpty(mBobSessionIdentifier));
- }
-
- @Test
- public void test09SessionIdentifiersAreIdentical() {
- // check both session identifiers are equals: alice vs bob
- assertTrue(mAliceSessionIdentifier.equals(mBobSessionIdentifier));
- }
-
- @Test
- public void test10InboundDecryptMessage() {
- mBobDecryptedMessage = null;
- OlmInboundGroupSession.DecryptMessageResult result = null;
-
- try {
- result = mBobInboundGroupSession.decryptMessage(mAliceToBobMessage);
- } catch (Exception e) {
- assertTrue(e.getMessage(), false);
- }
-
- // test decrypted message
- mBobDecryptedMessage = result.mDecryptedMessage;
- assertFalse(TextUtils.isEmpty(mBobDecryptedMessage));
- assertTrue(0 == result.mIndex);
- }
-
- @Test
- public void test11InboundDecryptedMessageIdentical() {
- // test decrypted message
- assertTrue(mBobDecryptedMessage.equals(CLEAR_MESSAGE1));
- }
-
- @Test
- public void test12ReleaseOutboundSession() {
- // release group sessions
- mAliceOutboundGroupSession.releaseSession();
- }
-
- @Test
- public void test13ReleaseInboundSession() {
- // release group sessions
- mBobInboundGroupSession.releaseSession();
- }
-
- @Test
- public void test14CheckUnreleaseedCount() {
- assertTrue(mAliceOutboundGroupSession.isReleased());
- assertTrue(mBobInboundGroupSession.isReleased());
- }
-
- @Test
- public void test15SerializeOutboundSession() {
- OlmOutboundGroupSession outboundGroupSessionRef=null;
- OlmOutboundGroupSession outboundGroupSessionSerial;
-
- // create one OUTBOUND GROUP SESSION
- try {
- outboundGroupSessionRef = new OlmOutboundGroupSession();
- } catch (OlmException e) {
- assertTrue("Exception in OlmOutboundGroupSession, Exception code=" + e.getExceptionCode(), false);
- }
- assertNotNull(outboundGroupSessionRef);
-
-
- // serialize alice session
- Context context = getInstrumentation().getContext();
- try {
- FileOutputStream fileOutput = context.openFileOutput(FILE_NAME_SERIAL_OUT_SESSION, Context.MODE_PRIVATE);
- ObjectOutputStream objectOutput = new ObjectOutputStream(fileOutput);
- objectOutput.writeObject(outboundGroupSessionRef);
- objectOutput.flush();
- objectOutput.close();
-
- // deserialize session
- FileInputStream fileInput = context.openFileInput(FILE_NAME_SERIAL_OUT_SESSION);
- ObjectInputStream objectInput = new ObjectInputStream(fileInput);
- outboundGroupSessionSerial = (OlmOutboundGroupSession) objectInput.readObject();
- assertNotNull(outboundGroupSessionSerial);
- objectInput.close();
-
- // get sessions keys
- String sessionKeyRef = outboundGroupSessionRef.sessionKey();
- String sessionKeySerial = outboundGroupSessionSerial.sessionKey();
- assertFalse(TextUtils.isEmpty(sessionKeyRef));
- assertFalse(TextUtils.isEmpty(sessionKeySerial));
-
- // session keys comparison
- assertTrue(sessionKeyRef.equals(sessionKeySerial));
-
- // get sessions IDs
- String sessionIdRef = outboundGroupSessionRef.sessionIdentifier();
- String sessionIdSerial = outboundGroupSessionSerial.sessionIdentifier();
- assertFalse(TextUtils.isEmpty(sessionIdRef));
- assertFalse(TextUtils.isEmpty(sessionIdSerial));
-
- // session IDs comparison
- assertTrue(sessionIdRef.equals(sessionIdSerial));
-
- outboundGroupSessionRef.releaseSession();
- outboundGroupSessionSerial.releaseSession();
-
- assertTrue(outboundGroupSessionRef.isReleased());
- assertTrue(outboundGroupSessionSerial.isReleased());
- } catch (FileNotFoundException e) {
- Log.e(LOG_TAG, "## test15SerializeOutboundSession(): Exception FileNotFoundException Msg=="+e.getMessage());
- assertTrue(e.getMessage(), false);
- } catch (ClassNotFoundException e) {
- Log.e(LOG_TAG, "## test15SerializeOutboundSession(): Exception ClassNotFoundException Msg==" + e.getMessage());
- assertTrue(e.getMessage(), false);
- } catch (OlmException e) {
- Log.e(LOG_TAG, "## test15SerializeOutboundSession(): Exception OlmException Msg==" + e.getMessage());
- assertTrue(e.getMessage(), false);
- } catch (IOException e) {
- Log.e(LOG_TAG, "## test15SerializeOutboundSession(): Exception IOException Msg==" + e.getMessage());
- assertTrue(e.getMessage(), false);
- } catch (Exception e) {
- Log.e(LOG_TAG, "## test15SerializeOutboundSession(): Exception Msg==" + e.getMessage());
- assertTrue(e.getMessage(), false);
- }
- }
-
- @Test
- public void test16SerializeInboundSession() {
- OlmOutboundGroupSession aliceOutboundGroupSession=null;
- OlmInboundGroupSession bobInboundGroupSessionRef=null;
- OlmInboundGroupSession bobInboundGroupSessionSerial;
-
- // alice creates OUTBOUND GROUP SESSION
- try {
- aliceOutboundGroupSession = new OlmOutboundGroupSession();
- } catch (OlmException e) {
- assertTrue("Exception in OlmOutboundGroupSession, Exception code=" + e.getExceptionCode(), false);
- }
- assertNotNull(aliceOutboundGroupSession);
-
- // get the session key from the outbound group session
- String sessionKeyRef = null;
-
- try {
- sessionKeyRef = aliceOutboundGroupSession.sessionKey();
- } catch (Exception e) {
- assertTrue(e.getMessage(), false);
- }
- assertNotNull(sessionKeyRef);
-
- // bob creates INBOUND GROUP SESSION
- try {
- bobInboundGroupSessionRef = new OlmInboundGroupSession(sessionKeyRef);
- } catch (OlmException e) {
- assertTrue("Exception in OlmInboundGroupSession, Exception code=" + e.getExceptionCode(), false);
- }
- assertNotNull(bobInboundGroupSessionRef);
-
- // serialize alice session
- Context context = getInstrumentation().getContext();
- try {
- FileOutputStream fileOutput = context.openFileOutput(FILE_NAME_SERIAL_IN_SESSION, Context.MODE_PRIVATE);
- ObjectOutputStream objectOutput = new ObjectOutputStream(fileOutput);
- objectOutput.writeObject(bobInboundGroupSessionRef);
- objectOutput.flush();
- objectOutput.close();
-
- // deserialize session
- FileInputStream fileInput = context.openFileInput(FILE_NAME_SERIAL_IN_SESSION);
- ObjectInputStream objectInput = new ObjectInputStream(fileInput);
- bobInboundGroupSessionSerial = (OlmInboundGroupSession)objectInput.readObject();
- assertNotNull(bobInboundGroupSessionSerial);
- objectInput.close();
-
- // get sessions IDs
- String aliceSessionId = aliceOutboundGroupSession.sessionIdentifier();
- String sessionIdRef = bobInboundGroupSessionRef.sessionIdentifier();
- String sessionIdSerial = bobInboundGroupSessionSerial.sessionIdentifier();
- assertFalse(TextUtils.isEmpty(aliceSessionId));
- assertFalse(TextUtils.isEmpty(sessionIdRef));
- assertFalse(TextUtils.isEmpty(sessionIdSerial));
-
- // session IDs comparison
- assertTrue(aliceSessionId.equals(sessionIdSerial));
- assertTrue(sessionIdRef.equals(sessionIdSerial));
-
- aliceOutboundGroupSession.releaseSession();
- bobInboundGroupSessionRef.releaseSession();
- bobInboundGroupSessionSerial.releaseSession();
-
- assertTrue(aliceOutboundGroupSession.isReleased());
- assertTrue(bobInboundGroupSessionRef.isReleased());
- assertTrue(bobInboundGroupSessionSerial.isReleased());
- } catch (FileNotFoundException e) {
- Log.e(LOG_TAG, "## test16SerializeInboundSession(): Exception FileNotFoundException Msg=="+e.getMessage());
- assertTrue(e.getMessage(), false);
- } catch (ClassNotFoundException e) {
- Log.e(LOG_TAG, "## test16SerializeInboundSession(): Exception ClassNotFoundException Msg==" + e.getMessage());
- assertTrue(e.getMessage(), false);
- } catch (OlmException e) {
- Log.e(LOG_TAG, "## test16SerializeInboundSession(): Exception OlmException Msg==" + e.getMessage());
- assertTrue(e.getMessage(), false);
- } catch (IOException e) {
- Log.e(LOG_TAG, "## test16SerializeInboundSession(): Exception IOException Msg==" + e.getMessage());
- assertTrue(e.getMessage(), false);
- } catch (Exception e) {
- Log.e(LOG_TAG, "## test16SerializeInboundSession(): Exception Msg==" + e.getMessage());
- assertTrue(e.getMessage(), false);
- }
- }
-
- /**
- * Create multiple outbound group sessions and check that session Keys are different.
- * This test validates random series are provide enough random values.
- */
- @Test
- public void test17MultipleOutboundSession() {
- OlmOutboundGroupSession outboundGroupSession1;
- OlmOutboundGroupSession outboundGroupSession2;
- OlmOutboundGroupSession outboundGroupSession3;
- OlmOutboundGroupSession outboundGroupSession4;
- OlmOutboundGroupSession outboundGroupSession5;
- OlmOutboundGroupSession outboundGroupSession6;
- OlmOutboundGroupSession outboundGroupSession7;
- OlmOutboundGroupSession outboundGroupSession8;
-
- try {
- outboundGroupSession1 = new OlmOutboundGroupSession();
- outboundGroupSession2 = new OlmOutboundGroupSession();
- outboundGroupSession3 = new OlmOutboundGroupSession();
- outboundGroupSession4 = new OlmOutboundGroupSession();
- outboundGroupSession5 = new OlmOutboundGroupSession();
- outboundGroupSession6 = new OlmOutboundGroupSession();
- outboundGroupSession7 = new OlmOutboundGroupSession();
- outboundGroupSession8 = new OlmOutboundGroupSession();
-
- // get the session key from the outbound group sessions
- String sessionKey1 = outboundGroupSession1.sessionKey();
- String sessionKey2 = outboundGroupSession2.sessionKey();
- assertFalse(sessionKey1.equals(sessionKey2));
-
- String sessionKey3 = outboundGroupSession3.sessionKey();
- assertFalse(sessionKey2.equals(sessionKey3));
-
- String sessionKey4 = outboundGroupSession4.sessionKey();
- assertFalse(sessionKey3.equals(sessionKey4));
-
- String sessionKey5 = outboundGroupSession5.sessionKey();
- assertFalse(sessionKey4.equals(sessionKey5));
-
- String sessionKey6 = outboundGroupSession6.sessionKey();
- assertFalse(sessionKey5.equals(sessionKey6));
-
- String sessionKey7 = outboundGroupSession7.sessionKey();
- assertFalse(sessionKey6.equals(sessionKey7));
-
- String sessionKey8 = outboundGroupSession8.sessionKey();
- assertFalse(sessionKey7.equals(sessionKey8));
-
- // get the session IDs from the outbound group sessions
- String sessionId1 = outboundGroupSession1.sessionIdentifier();
- String sessionId2 = outboundGroupSession2.sessionIdentifier();
- assertFalse(sessionId1.equals(sessionId2));
-
- String sessionId3 = outboundGroupSession3.sessionKey();
- assertFalse(sessionId2.equals(sessionId3));
-
- String sessionId4 = outboundGroupSession4.sessionKey();
- assertFalse(sessionId3.equals(sessionId4));
-
- String sessionId5 = outboundGroupSession5.sessionKey();
- assertFalse(sessionId4.equals(sessionId5));
-
- String sessionId6 = outboundGroupSession6.sessionKey();
- assertFalse(sessionId5.equals(sessionId6));
-
- String sessionId7 = outboundGroupSession7.sessionKey();
- assertFalse(sessionId6.equals(sessionId7));
-
- String sessionId8 = outboundGroupSession8.sessionKey();
- assertFalse(sessionId7.equals(sessionId8));
-
- outboundGroupSession1.releaseSession();
- outboundGroupSession2.releaseSession();
- outboundGroupSession3.releaseSession();
- outboundGroupSession4.releaseSession();
- outboundGroupSession5.releaseSession();
- outboundGroupSession6.releaseSession();
- outboundGroupSession7.releaseSession();
- outboundGroupSession8.releaseSession();
-
- assertTrue(outboundGroupSession1.isReleased());
- assertTrue(outboundGroupSession2.isReleased());
- assertTrue(outboundGroupSession3.isReleased());
- assertTrue(outboundGroupSession4.isReleased());
- assertTrue(outboundGroupSession5.isReleased());
- assertTrue(outboundGroupSession6.isReleased());
- assertTrue(outboundGroupSession7.isReleased());
- assertTrue(outboundGroupSession8.isReleased());
- } catch (OlmException e) {
- assertTrue("Exception in OlmOutboundGroupSession, Exception code=" + e.getExceptionCode(), false);
- }
- }
-
- /**
- * Specific test for the following run time error:
- * "JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0 in call to NewStringUTF".<br>
- * When the msg to decrypt contain emojis, depending on the android platform, the NewStringUTF() behaves differently and
- * can even crash.
- * This issue is described in details here: https://github.com/eclipsesource/J2V8/issues/142
- */
- @Test
- public void test18TestBadCharacterCrashInDecrypt() {
- OlmInboundGroupSession bobInboundGroupSession=null;
-
- // values taken from a "real life" crash case
- String sessionKeyRef = "AgAAAAycZE6AekIctJWYxd2AWLOY15YmxZODm/WkgbpWkyycp6ytSp/R+wo84jRrzBNWmv6ySLTZ9R0EDOk9VI2eZyQ6Efdwyo1mAvrWvTkZl9yALPdkOIVHywyG65f1SNiLrnsln3hgsT1vUrISGyKtsljoUgQpr3JDPEhD0ilAi63QBjhnGCW252b+7nF+43rb6O6lwm93LaVwe2341Gdp6EkhTUvetALezEqDOtKN00wVqAbq0RQAnUJIowxHbMswg+FyoR1K1oCjnVEoF23O9xlAn5g1XtuBZP3moJlR2lwsBA";
- String msgToDecryptWithEmoji = "AwgNEpABpjs+tYF+0y8bWtzAgYAC3N55p5cPJEEiGPU1kxIHSY7f2aG5Fj4wmcsXUkhDv0UePj922kgf+Q4dFsPHKq2aVA93n8DJAQ/FRfcM98B9E6sKCZ/PsCF78uBvF12Aaq9D3pUHBopdd7llUfVq29d5y6ZwX5VDoqV2utsATkKjXYV9CbfZuvvBMQ30ZLjEtyUUBJDY9K4FxEFcULytA/IkVnATTG9ERuLF/yB6ukSFR+iUWRYAmtuOuU0k9BvaqezbGqNoK5Grlkes+dYX6/0yUObumcw9/iAI";
-
- // bob creates INBOUND GROUP SESSION
- try {
- bobInboundGroupSession = new OlmInboundGroupSession(sessionKeyRef);
- } catch (OlmException e) {
- assertTrue("Exception in test18TestBadCharacterCrashInDecrypt, Exception code=" + e.getExceptionCode(), false);
- }
-
- OlmInboundGroupSession.DecryptMessageResult result = null;
-
- try {
- result = bobInboundGroupSession.decryptMessage(msgToDecryptWithEmoji);
- } catch (Exception e) {
- assertTrue("Exception in test18TestBadCharacterCrashInDecrypt, Exception code=" + e.getMessage(), false);
- }
-
- assertNotNull(result.mDecryptedMessage);
- assertTrue(13 == result.mIndex);
- }
-
- /**
- * Specific test to check an error message is returned by decryptMessage() API.<br>
- * A corrupted encrypted message is passed, and a INVALID_BASE64 is
- * espexted.
- **/
- @Test
- public void test19TestErrorMessageReturnedInDecrypt() {
- OlmInboundGroupSession bobInboundGroupSession=null;
- final String EXPECTED_ERROR_MESSAGE= "INVALID_BASE64";
-
- String sessionKeyRef = "AgAAAAycZE6AekIctJWYxd2AWLOY15YmxZODm/WkgbpWkyycp6ytSp/R+wo84jRrzBNWmv6ySLTZ9R0EDOk9VI2eZyQ6Efdwyo1mAvrWvTkZl9yALPdkOIVHywyG65f1SNiLrnsln3hgsT1vUrISGyKtsljoUgQpr3JDPEhD0ilAi63QBjhnGCW252b+7nF+43rb6O6lwm93LaVwe2341Gdp6EkhTUvetALezEqDOtKN00wVqAbq0RQAnUJIowxHbMswg+FyoR1K1oCjnVEoF23O9xlAn5g1XtuBZP3moJlR2lwsBA";
- String corruptedEncryptedMsg = "AwgANYTHINGf87ge45ge7gr*/rg5ganything4gr41rrgr4re55tanythingmcsXUkhDv0UePj922kgf+";
-
- // valid INBOUND GROUP SESSION
- try {
- bobInboundGroupSession = new OlmInboundGroupSession(sessionKeyRef);
- } catch (OlmException e) {
- assertTrue("Exception in test19TestErrorMessageReturnedInDecrypt, Exception code=" + e.getExceptionCode(), false);
- }
-
- String exceptionMessage = null;
- try {
- bobInboundGroupSession.decryptMessage(corruptedEncryptedMsg);
- } catch (OlmException e) {
- exceptionMessage = e.getMessage();
- }
-
- assertTrue(0!=EXPECTED_ERROR_MESSAGE.length());
- assertTrue(EXPECTED_ERROR_MESSAGE.equals(exceptionMessage));
- }
-
-
- /**
- * Test the import/export functions.<br>
- **/
- @Test
- public void test20TestInboundGroupSessionImportExport() {
-
- String sessionKey = "AgAAAAAwMTIzNDU2Nzg5QUJERUYwMTIzNDU2Nzg5QUJDREVGMDEyMzQ1Njc4OUFCREVGM" +
- "DEyMzQ1Njc4OUFCQ0RFRjAxMjM0NTY3ODlBQkRFRjAxMjM0NTY3ODlBQkNERUYwMTIzND" +
- "U2Nzg5QUJERUYwMTIzNDU2Nzg5QUJDREVGMDEyMw0bdg1BDq4Px/slBow06q8n/B9WBfw" +
- "WYyNOB8DlUmXGGwrFmaSb9bR/eY8xgERrxmP07hFmD9uqA2p8PMHdnV5ysmgufE6oLZ5+" +
- "8/mWQOW3VVTnDIlnwd8oHUYRuk8TCQ";
-
- String message = "AwgAEhAcbh6UpbByoyZxufQ+h2B+8XHMjhR69G8F4+qjMaFlnIXusJZX3r8LnRORG9T3D" +
- "XFdbVuvIWrLyRfm4i8QRbe8VPwGRFG57B1CtmxanuP8bHtnnYqlwPsD";
-
-
- OlmInboundGroupSession inboundGroupSession = null;
-
- try {
- inboundGroupSession = new OlmInboundGroupSession(sessionKey);
- } catch (Exception e) {
- assertTrue("OlmInboundGroupSession failed " + e.getMessage(), false);
- }
-
- boolean isVerified = false;
-
- try {
- isVerified = inboundGroupSession.isVerified();
- } catch (Exception e) {
- assertTrue("isVerified failed " + e.getMessage(), false);
- }
-
- assertTrue(isVerified);
-
- OlmInboundGroupSession.DecryptMessageResult result = null;
-
- try {
- result = inboundGroupSession.decryptMessage(message);
- } catch (Exception e) {
- assertTrue("decryptMessage failed " + e.getMessage(), false);
- }
-
- assertTrue(TextUtils.equals(result.mDecryptedMessage, "Message"));
- assertTrue(0 == result.mIndex);
-
- String export = null;
-
- try {
- export = inboundGroupSession.export(0);
- } catch (Exception e) {
- assertTrue("export failed " + e.getMessage(), false);
- }
- assertTrue(!TextUtils.isEmpty(export));
-
- long index = -1;
- try {
- index = inboundGroupSession.getFirstKnownIndex();
- } catch (Exception e) {
- assertTrue("getFirstKnownIndex failed " + e.getMessage(), false);
- }
- assertTrue(index >=0);
-
- inboundGroupSession.releaseSession();
- inboundGroupSession = null;
-
- OlmInboundGroupSession inboundGroupSession2 = null;
-
- try {
- inboundGroupSession2 = inboundGroupSession.importSession(export);
- } catch (Exception e) {
- assertTrue("OlmInboundGroupSession failed " + e.getMessage(), false);
- }
-
- try {
- isVerified = inboundGroupSession2.isVerified();
- } catch (Exception e) {
- assertTrue("isVerified failed " + e.getMessage(), false);
- }
-
- assertFalse(isVerified);
-
- result = null;
- try {
- result = inboundGroupSession2.decryptMessage(message);
- } catch (Exception e) {
- assertTrue("decryptMessage failed " + e.getMessage(), false);
- }
-
- assertTrue(TextUtils.equals(result.mDecryptedMessage, "Message"));
- assertTrue(0 == result.mIndex);
-
- try {
- isVerified = inboundGroupSession2.isVerified();
- } catch (Exception e) {
- assertTrue("isVerified failed " + e.getMessage(), false);
- }
-
- assertTrue(isVerified);
- inboundGroupSession2.releaseSession();
- }
-}
-