aboutsummaryrefslogtreecommitdiff
path: root/java/android/OlmLibSdk/olm-sdk/src/main/java/org
diff options
context:
space:
mode:
authorpedroGitt <pedro.contreiras@amdocs.com>2016-11-14 11:56:37 +0100
committerpedroGitt <pedro.contreiras@amdocs.com>2016-11-14 11:56:37 +0100
commit04fd4c5a1301545419fb72533c57e4253085bdc0 (patch)
tree642de7b2fb37daebfdfc7a9ca80744bf58a5e044 /java/android/OlmLibSdk/olm-sdk/src/main/java/org
parentd944d5fad70283e4cc095802fd893b87309f341d (diff)
Fix the decrypt issue (crash on V5.1.1) when the message to decrypt contains emojis:AndroidSdk_v0.2.0
- add an internal specific JNI function (javaCStringToUtf8()) to perform the UTF-8 conversion - the SDK is configured to enable/disable the use of javaCStringToUtf8()
Diffstat (limited to 'java/android/OlmLibSdk/olm-sdk/src/main/java/org')
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmInboundGroupSession.java14
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmManager.java12
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmSession.java4
3 files changed, 26 insertions, 4 deletions
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmInboundGroupSession.java b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmInboundGroupSession.java
index 50e77f7..fa4ca1d 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmInboundGroupSession.java
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmInboundGroupSession.java
@@ -123,16 +123,26 @@ public class OlmInboundGroupSession extends CommonSerializeUtils implements Seri
private native int initInboundGroupSessionWithSessionKeyJni(String aSessionKey);
+ /**
+ * Retrieve the base64-encoded identifier for this inbound group session.
+ * @return the session ID if operation succeed, null otherwise
+ */
public String sessionIdentifier() {
return sessionIdentifierJni();
}
private native String sessionIdentifierJni();
+ /**
+ * Decrypt the message passed in parameter.
+ * @param aEncryptedMsg the message to be decrypted
+ * @return the decrypted message if operation succeed, null otherwise.
+ */
public String decryptMessage(String aEncryptedMsg) {
- return decryptMessageJni(aEncryptedMsg);
+ String decryptedMessage = decryptMessageJni(aEncryptedMsg, OlmManager.ENABLE_STRING_UTF8_SPECIFIC_CONVERSION);
+ return decryptedMessage;
}
- private native String decryptMessageJni(String aEncryptedMsg);
+ private native String decryptMessageJni(String aEncryptedMsg, boolean aIsUtf8ConversionRequired);
/**
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmManager.java b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmManager.java
index 92fbe2b..5170ee9 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmManager.java
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmManager.java
@@ -25,6 +25,18 @@ import android.util.Log;
public class OlmManager {
private static final String LOG_TAG = "OlmManager";
private static final String SDK_OLM_VERSION = "V0.1.0_1";
+ /** specific flag to enable UTF-8 specific conversion for pre Marshmallow(23) android versions.<br>
+ * <a href="https://github.com/eclipsesource/J2V8/issues/142">NDK NewStringUTF() UTF8 issue</a>
+ **/
+ public static boolean ENABLE_STRING_UTF8_SPECIFIC_CONVERSION;
+
+ /**
+ * Constructor.
+ * @param aIsUtf8SpecificConversionEnabled true to enable JNI specific UTF-8 conversion, false otherwie
+ */
+ public OlmManager(boolean aIsUtf8SpecificConversionEnabled) {
+ ENABLE_STRING_UTF8_SPECIFIC_CONVERSION = aIsUtf8SpecificConversionEnabled;
+ }
static {
try {
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmSession.java b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmSession.java
index 6d570d1..dddc588 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmSession.java
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmSession.java
@@ -361,10 +361,10 @@ public class OlmSession extends CommonSerializeUtils implements Serializable {
* @return the decrypted message if operation succeed, null otherwise
*/
public String decryptMessage(OlmMessage aEncryptedMsg) {
- return decryptMessageJni(aEncryptedMsg);
+ return decryptMessageJni(aEncryptedMsg, OlmManager.ENABLE_STRING_UTF8_SPECIFIC_CONVERSION);
}
- private native String decryptMessageJni(OlmMessage aEncryptedMsg);
+ private native String decryptMessageJni(OlmMessage aEncryptedMsg, boolean aIsUtf8ConversionRequired);
/**
* Return the number of unreleased OlmSession instances.<br>