aboutsummaryrefslogtreecommitdiff
path: root/java/android/OlmLibSdk/olm-sdk/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'java/android/OlmLibSdk/olm-sdk/src/main/java')
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/CommonSerializeUtils.java16
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmAccount.java24
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmInboundGroupSession.java33
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmOutboundGroupSession.java25
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmSession.java22
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmUtility.java6
6 files changed, 64 insertions, 62 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 72437e4..b8c7215 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
@@ -39,11 +39,11 @@ abstract class CommonSerializeUtils {
aOutStream.defaultWriteObject();
// generate serialization key
- String key = OlmUtility.getRandomKey();
+ byte[] key = OlmUtility.getRandomKey();
// compute pickle string
StringBuffer errorMsg = new StringBuffer();
- String pickledData = serialize(key, errorMsg);
+ byte[] pickledData = serialize(key, errorMsg);
if(null == pickledData) {
throw new OlmException(OlmException.EXCEPTION_CODE_ACCOUNT_SERIALIZATION, String.valueOf(errorMsg));
@@ -62,12 +62,12 @@ abstract class CommonSerializeUtils {
protected void deserialize(ObjectInputStream aInStream) throws IOException, ClassNotFoundException {
aInStream.defaultReadObject();
- String key = (String) aInStream.readObject();
- String pickledData = (String) aInStream.readObject();
+ byte[] key = (byte[]) aInStream.readObject();
+ byte[] pickledData = (byte[]) aInStream.readObject();
- if (TextUtils.isEmpty(key)) {
+ if (null == key) {
throw new OlmException(OlmException.EXCEPTION_CODE_ACCOUNT_DESERIALIZATION, OlmException.EXCEPTION_MSG_INVALID_PARAMS_DESERIALIZATION+" key");
- } else if (TextUtils.isEmpty(pickledData)) {
+ } else if (null == pickledData) {
throw new OlmException(OlmException.EXCEPTION_CODE_ACCOUNT_DESERIALIZATION, OlmException.EXCEPTION_MSG_INVALID_PARAMS_DESERIALIZATION+" pickle");
}
@@ -75,6 +75,6 @@ abstract class CommonSerializeUtils {
Log.d(LOG_TAG,"## deserializeObject(): success");
}
- protected abstract String serialize(String aKey, StringBuffer aErrorMsg);
- protected abstract void deserialize(String aSerializedData, String aKey) throws IOException;
+ protected abstract byte[] serialize(byte[] aKey, StringBuffer aErrorMsg);
+ protected abstract void deserialize(byte[] aSerializedData, byte[] aKey) throws IOException;
}
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmAccount.java b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmAccount.java
index 9d8e6d6..3a78365 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmAccount.java
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmAccount.java
@@ -418,27 +418,27 @@ public class OlmAccount extends CommonSerializeUtils implements Serializable {
}
/**
- * Return an account as a base64 string.<br>
+ * Return an account as a bytes buffer.<br>
* The account is serialized and encrypted with aKey.
* In case of failure, an error human readable
* description is provide in aErrorMsg.
* @param aKey encryption key
* @param aErrorMsg error message description
- * @return pickled base64 string if operation succeed, null otherwise
+ * @return the account as bytes buffer
*/
@Override
- protected String serialize(String aKey, StringBuffer aErrorMsg) {
- String pickleRetValue = null;
+ protected byte[] serialize(byte[] aKey, StringBuffer aErrorMsg) {
+ byte[] pickleRetValue = null;
// sanity check
if(null == aErrorMsg) {
Log.e(LOG_TAG,"## serialize(): invalid parameter - aErrorMsg=null");
- } else if(TextUtils.isEmpty(aKey)) {
+ } else if (null == aKey) {
aErrorMsg.append("Invalid input parameters in serializeDataWithKey()");
} else {
aErrorMsg.setLength(0);
try {
- pickleRetValue = new String(serializeJni(aKey.getBytes("UTF-8")), "UTF-8");
+ pickleRetValue = serializeJni(aKey);
} catch (Exception e) {
Log.e(LOG_TAG, "## serialize() failed " + e.getMessage());
aErrorMsg.append(e.getMessage());
@@ -451,13 +451,13 @@ public class OlmAccount extends CommonSerializeUtils implements Serializable {
private native byte[] serializeJni(byte[] aKey);
/**
- * Loads an account from a pickled base64 string.<br>
- * See {@link #serialize(String, StringBuffer)}
- * @param aSerializedData pickled account in a base64 string format
+ * Loads an account from a pickled bytes buffer.<br>
+ * See {@link #serialize(byte[], StringBuffer)}
+ * @param aSerializedData bytes buffer
* @param aKey key used to encrypted
*/
@Override
- protected void deserialize(String aSerializedData, String aKey) throws IOException {
+ protected void deserialize(byte[] aSerializedData, byte[] aKey) throws IOException {
if (!createNewAccount()) {
throw new OlmException(OlmException.EXCEPTION_CODE_INIT_ACCOUNT_CREATION,OlmException.EXCEPTION_MSG_INIT_ACCOUNT_CREATION);
}
@@ -466,10 +466,10 @@ public class OlmAccount extends CommonSerializeUtils implements Serializable {
try {
String jniError;
- if (TextUtils.isEmpty(aSerializedData) || TextUtils.isEmpty(aKey)) {
+ if ((null == aSerializedData) || (null == aKey)) {
Log.e(LOG_TAG, "## deserialize(): invalid input parameters");
errorMsg.append("invalid input parameters");
- } else if (null != (jniError = deserializeJni(aSerializedData.getBytes("UTF-8"), aKey.getBytes("UTF-8")))) {
+ } else if (null != (jniError = deserializeJni(aSerializedData, aKey))) {
errorMsg.append(jniError);
}
} catch (Exception e) {
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 41eeba1..dc1b80d 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
@@ -44,7 +44,7 @@ public class OlmInboundGroupSession extends CommonSerializeUtils implements Seri
/**
* Result in {@link #decryptMessage(String)}
*/
- static class DecryptMessageResult {
+ public static class DecryptMessageResult {
/** decrypt message **/
public String mDecryptedMessage;
@@ -135,6 +135,7 @@ public class OlmInboundGroupSession extends CommonSerializeUtils implements Seri
/**
* Retrieve the base64-encoded identifier for this inbound group session.
* @return the session ID
+ * @throws OlmException the failure reason
*/
public String sessionIdentifier() throws OlmException {
try {
@@ -197,28 +198,28 @@ public class OlmInboundGroupSession extends CommonSerializeUtils implements Seri
}
/**
- * Return the current inbound group session as a base64 serialized string.<br>
+ * Return the current inbound group session as a bytes buffer.<br>
* The session is serialized and encrypted with aKey.
* In case of failure, an error human readable
* description is provide in aErrorMsg.
* @param aKey encryption key
* @param aErrorMsg error message description
- * @return pickled base64 string if operation succeed, null otherwise
+ * @return pickled bytes buffer if operation succeed, null otherwise
*/
@Override
- protected String serialize(String aKey, StringBuffer aErrorMsg) {
- String pickleRetValue = null;
+ protected byte[] serialize(byte[] aKey, StringBuffer aErrorMsg) {
+ byte[] pickleRetValue = null;
// sanity check
if(null == aErrorMsg) {
Log.e(LOG_TAG,"## serialize(): invalid parameter - aErrorMsg=null");
aErrorMsg.append("aErrorMsg=null");
- } else if(TextUtils.isEmpty(aKey)) {
+ } else if (null == aKey) {
aErrorMsg.append("Invalid input parameters in serialize()");
} else {
aErrorMsg.setLength(0);
try {
- pickleRetValue = new String(serializeJni(aKey.getBytes("UTF-8")), "UTF-8");
+ pickleRetValue = serializeJni(aKey);
} catch (Exception e) {
Log.e(LOG_TAG, "## serialize() failed " + e.getMessage());
aErrorMsg.append(e.getMessage());
@@ -228,7 +229,7 @@ public class OlmInboundGroupSession extends CommonSerializeUtils implements Seri
return pickleRetValue;
}
/**
- * JNI counter part of {@link #serialize(String, StringBuffer)}.
+ * JNI counter part of {@link #serialize(byte[], StringBuffer)}.
* @param aKey encryption key
* @return pickled base64 string if operation succeed, null otherwise
*/
@@ -236,12 +237,12 @@ public class OlmInboundGroupSession extends CommonSerializeUtils implements Seri
/**
* Loads an account from a pickled base64 string.<br>
- * See {@link #serialize(String, StringBuffer)}
- * @param aSerializedData pickled account in a base64 string format
+ * See {@link #serialize(byte[], StringBuffer)}
+ * @param aSerializedData pickled account in a bytes buffer
* @param aKey key used to encrypted
*/
@Override
- protected void deserialize(String aSerializedData, String aKey) throws IOException {
+ protected void deserialize(byte[] aSerializedData, byte[] aKey) throws IOException {
if (!createNewSession()) {
throw new OlmException(OlmException.EXCEPTION_CODE_INIT_ACCOUNT_CREATION,OlmException.EXCEPTION_MSG_INIT_ACCOUNT_CREATION);
}
@@ -250,10 +251,10 @@ public class OlmInboundGroupSession extends CommonSerializeUtils implements Seri
try {
String jniError;
- if (TextUtils.isEmpty(aSerializedData) || TextUtils.isEmpty(aKey)) {
+ if ((null == aSerializedData) || (null == aKey)) {
Log.e(LOG_TAG, "## deserialize(): invalid input parameters");
errorMsg.append("invalid input parameters");
- } else if (null != (jniError = deserializeJni(aSerializedData.getBytes("UTF-8"), aKey.getBytes("UTF-8")))) {
+ } else if (null != (jniError = deserializeJni(aSerializedData, aKey))) {
errorMsg.append(jniError);
}
} catch (Exception e) {
@@ -268,9 +269,9 @@ public class OlmInboundGroupSession extends CommonSerializeUtils implements Seri
}
/**
- * JNI counter part of {@link #deserialize(String, String)}.
- * @param aSerializedData pickled session in a base64 string format
- * @param aKey key used to encrypted in {@link #serialize(String, StringBuffer)}
+ * JNI counter part of {@link #deserialize(byte[], byte[])}.
+ * @param aSerializedData pickled session in a base64 sbytes buffer
+ * @param aKey key used to encrypted in {@link #serialize(byte[], StringBuffer)}
* @return null if operation succeed, an error message if operation failed
*/
private native String deserializeJni(byte[] aSerializedData, byte[] aKey);
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmOutboundGroupSession.java b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmOutboundGroupSession.java
index c27addb..534636c 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmOutboundGroupSession.java
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmOutboundGroupSession.java
@@ -117,6 +117,7 @@ public class OlmOutboundGroupSession extends CommonSerializeUtils implements Ser
/**
* Get a base64-encoded identifier for this session.
* @return session identifier
+ * @throws OlmException the failure reason
*/
public String sessionIdentifier() throws OlmException {
try {
@@ -210,26 +211,26 @@ public class OlmOutboundGroupSession extends CommonSerializeUtils implements Ser
}
/**
- * Return the current outbound group session as a base64 serialized string.<br>
+ * Return the current outbound group session as a base64 byte buffers.<br>
* The session is serialized and encrypted with aKey.
* In case of failure, an error human readable
* description is provide in aErrorMsg.
* @param aKey encryption key
* @param aErrorMsg error message description
- * @return pickled base64 string if operation succeed, null otherwise
+ * @return pickled base64 bytes buffer if operation succeed, null otherwise
*/
@Override
- protected String serialize(String aKey, StringBuffer aErrorMsg) {
- String pickleRetValue = null;
+ protected byte[] serialize(byte[] aKey, StringBuffer aErrorMsg) {
+ byte[] pickleRetValue = null;
// sanity check
if(null == aErrorMsg) {
Log.e(LOG_TAG,"## serialize(): invalid parameter - aErrorMsg=null");
- } else if(TextUtils.isEmpty(aKey)) {
+ } else if (null == aKey) {
aErrorMsg.append("Invalid input parameters in serialize()");
} else {
try {
- pickleRetValue = serializeJni(aKey.getBytes("UTF-8"));
+ pickleRetValue = serializeJni(aKey);
} catch (Exception e) {
Log.e(LOG_TAG,"## serialize(): failed " + e.getMessage());
aErrorMsg.append(e.getMessage());
@@ -238,17 +239,17 @@ public class OlmOutboundGroupSession extends CommonSerializeUtils implements Ser
return pickleRetValue;
}
- private native String serializeJni(byte[] aKey);
+ private native byte[] serializeJni(byte[] aKey);
/**
* Loads an account from a pickled base64 string.<br>
- * See {@link #serialize(String, StringBuffer)}
- * @param aSerializedData pickled account in a base64 string format
+ * See {@link #serialize(byte[], StringBuffer)}
+ * @param aSerializedData pickled account in a base64 bytes buffer
* @param aKey key used to encrypted
*/
@Override
- protected void deserialize(String aSerializedData, String aKey) throws IOException {
+ protected void deserialize(byte[] aSerializedData, byte[] aKey) throws IOException {
if (!createNewSession()) {
throw new OlmException(OlmException.EXCEPTION_CODE_INIT_ACCOUNT_CREATION,OlmException.EXCEPTION_MSG_INIT_ACCOUNT_CREATION);
}
@@ -257,10 +258,10 @@ public class OlmOutboundGroupSession extends CommonSerializeUtils implements Ser
try {
String jniError;
- if (TextUtils.isEmpty(aSerializedData) || TextUtils.isEmpty(aKey)) {
+ if ((null == aSerializedData) || (null == aKey)) {
Log.e(LOG_TAG, "## deserialize(): invalid input parameters");
errorMsg.append("invalid input parameters");
- } else if (null != (jniError = deserializeJni(aSerializedData.getBytes("UTF-8"), aKey.getBytes("UTF-8")))) {
+ } else if (null != (jniError = deserializeJni(aSerializedData, aKey))) {
errorMsg.append(jniError);
}
} catch (Exception e) {
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 9138309..bc190ed 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
@@ -336,27 +336,27 @@ public class OlmSession extends CommonSerializeUtils implements Serializable {
}
/**
- * Return a session as a base64 string.<br>
+ * Return a session as a bytes buffer.<br>
* The account is serialized and encrypted with aKey.
* In case of failure, an error human readable
* description is provide in aErrorMsg.
* @param aKey encryption key
* @param aErrorMsg error message description
- * @return pickled base64 string if operation succeed, null otherwise
+ * @return session as a bytes buffer
*/
@Override
- protected String serialize(String aKey, StringBuffer aErrorMsg) {
- String pickleRetValue = null;
+ protected byte[] serialize(byte[] aKey, StringBuffer aErrorMsg) {
+ byte[] pickleRetValue = null;
// sanity check
if(null == aErrorMsg) {
Log.e(LOG_TAG,"## serializeDataWithKey(): invalid parameter - aErrorMsg=null");
- } else if(TextUtils.isEmpty(aKey)) {
+ } else if (null == aKey) {
aErrorMsg.append("Invalid input parameters in serializeDataWithKey()");
} else {
aErrorMsg.setLength(0);
try {
- pickleRetValue = serializeJni(aKey.getBytes("UTF-8"));
+ pickleRetValue = serializeJni(aKey);
} catch (Exception e) {
Log.e(LOG_TAG,"## serializeDataWithKey(): failed " + e.getMessage());
aErrorMsg.append(e.getMessage());
@@ -365,16 +365,16 @@ public class OlmSession extends CommonSerializeUtils implements Serializable {
return pickleRetValue;
}
- private native String serializeJni(byte[] aKey);
+ private native byte[] serializeJni(byte[] aKey);
/**
* Loads an account from a pickled base64 string.<br>
- * See {@link #serialize(String, StringBuffer)}
+ * See {@link #serialize(byte[], StringBuffer)}
* @param aSerializedData pickled account in a base64 string format
* @param aKey key used to encrypted
*/
@Override
- protected void deserialize(String aSerializedData, String aKey) throws IOException {
+ protected void deserialize(byte[] aSerializedData, byte[] aKey) throws IOException {
if (!createNewSession()) {
throw new OlmException(OlmException.EXCEPTION_CODE_INIT_ACCOUNT_CREATION,OlmException.EXCEPTION_MSG_INIT_ACCOUNT_CREATION);
}
@@ -383,10 +383,10 @@ public class OlmSession extends CommonSerializeUtils implements Serializable {
try {
String jniError;
- if (TextUtils.isEmpty(aSerializedData) || TextUtils.isEmpty(aKey)) {
+ if ((null == aSerializedData) || (null == aKey)) {
Log.e(LOG_TAG, "## deserialize(): invalid input parameters");
errorMsg.append("invalid input parameters");
- } else if (null != (jniError = deserializeJni(aSerializedData.getBytes("UTF-8"), aKey.getBytes("UTF-8")))) {
+ } else if (null != (jniError = deserializeJni(aSerializedData, aKey))) {
errorMsg.append(jniError);
}
} catch (Exception e) {
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmUtility.java b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmUtility.java
index d3c185f..28d8b58 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmUtility.java
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/java/org/matrix/olm/OlmUtility.java
@@ -135,13 +135,13 @@ public class OlmUtility {
/**
* Helper method to compute a string based on random integers.
- * @return string containing randoms integer values
+ * @return bytes buffer containing randoms integer values
*/
- public static String getRandomKey() {
+ public static byte[] getRandomKey() {
SecureRandom secureRandom = new SecureRandom();
byte[] buffer = new byte[RANDOM_KEY_SIZE];
secureRandom.nextBytes(buffer);
- return new String(buffer);
+ return buffer;
}
/**