From 30c8d069bc37d8d72f91aacb3ae5bd64f603ad3d Mon Sep 17 00:00:00 2001
From: ylecollen <ylecollen@amdocs.com>
Date: Mon, 9 Jan 2017 13:56:41 +0100
Subject: [PATCH] The crypto objects are now saved as String to keep the
 backward compliancy.

---
 .../org/matrix/olm/CommonSerializeUtils.java  | 26 +++++++++++++------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/CommonSerializeUtils.java b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/CommonSerializeUtils.java
index b8c7215..30f8352 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/CommonSerializeUtils.java
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/CommonSerializeUtils.java
@@ -48,22 +48,32 @@ abstract class CommonSerializeUtils {
         if(null == pickledData) {
             throw new OlmException(OlmException.EXCEPTION_CODE_ACCOUNT_SERIALIZATION, String.valueOf(errorMsg));
         } else {
-            aOutStream.writeObject(key);
-            aOutStream.writeObject(pickledData);
+            aOutStream.writeObject(new String(key, "UTF-8"));
+            aOutStream.writeObject(new String(pickledData, "UTF-8"));
         }
     }
 
     /**
      * Kick off the deserialization mechanism.
      * @param aInStream input stream
-     * @throws IOException exception
-     * @throws ClassNotFoundException exception
+     * @throws Exception the exception
      */
-    protected void deserialize(ObjectInputStream aInStream) throws IOException, ClassNotFoundException {
+    protected void deserialize(ObjectInputStream aInStream) throws Exception {
         aInStream.defaultReadObject();
 
-        byte[] key = (byte[]) aInStream.readObject();
-        byte[] pickledData = (byte[]) aInStream.readObject();
+        String keyAsString = (String)aInStream.readObject();
+        String pickledDataAsString = (String)aInStream.readObject();
+
+        byte[] key;
+        byte[] pickledData;
+
+        try {
+            key = keyAsString.getBytes("UTF-8");
+            pickledData = pickledDataAsString.getBytes("UTF-8");
+
+        } catch (Exception e) {
+            throw new OlmException(OlmException.EXCEPTION_CODE_ACCOUNT_DESERIALIZATION, e.getMessage());
+        }
 
         if (null == key) {
             throw new OlmException(OlmException.EXCEPTION_CODE_ACCOUNT_DESERIALIZATION, OlmException.EXCEPTION_MSG_INVALID_PARAMS_DESERIALIZATION+" key");
@@ -76,5 +86,5 @@ abstract class CommonSerializeUtils {
     }
 
     protected abstract byte[] serialize(byte[] aKey, StringBuffer aErrorMsg);
-    protected abstract void deserialize(byte[] aSerializedData, byte[] aKey) throws IOException;
+    protected abstract void deserialize(byte[] aSerializedData, byte[] aKey) throws Exception;
 }
-- 
GitLab