aboutsummaryrefslogtreecommitdiff
path: root/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_utility.cpp
diff options
context:
space:
mode:
authorpedroGitt <pedro.contreiras@amdocs.com>2016-10-14 18:43:57 +0200
committerpedroGitt <pedro.contreiras@amdocs.com>2016-10-14 18:43:57 +0200
commitebfcd03ce5b627236edf2c2c1f334f5c59f9d291 (patch)
treef9611c8d4d6d26585673849dfad5d31eccc1b000 /java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_utility.cpp
parent102809955026d92a3f5cf29e05998d91a992de9c (diff)
- Add in/outbound group unit test OK
Diffstat (limited to 'java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_utility.cpp')
-rw-r--r--java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_utility.cpp206
1 files changed, 11 insertions, 195 deletions
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_utility.cpp b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_utility.cpp
index bd920fe..fb9c9c5 100644
--- a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_utility.cpp
+++ b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_utility.cpp
@@ -1,6 +1,3 @@
-/**
- * Created by pedrocon on 06/10/2016.
- */
/*
* Copyright 2016 OpenMarket Ltd
*
@@ -21,201 +18,20 @@
#include "olm_utility.h"
/**
-* Init a buffer with a given number of random values.
-* @param aBuffer2Ptr the buffer to be initialized
-* @param aRandomSize the number of random values to apply
-* @return true if operation succeed, false otherwise
-**/
-bool setRandomInBuffer(uint8_t **aBuffer2Ptr, size_t aRandomSize)
+ * Verify an ed25519 signature.
+ * If the key was too small then the message will be "OLM.INVALID_BASE64".
+ * If the signature was invalid then the message will be "OLM.BAD_MESSAGE_MAC".
+ * @param aKey the ed25519 key.
+ * @param aMessage the message which was signed.
+ * @param aSignature the base64-encoded signature to be checked.
+ * @param the result error if there is a problem with the verification.
+ * @return true if validation succeed, false otherwise
+ */
+JNIEXPORT bool OLM_UTILITY_FUNC_DEF(ed25519VerifyJni)(JNIEnv *env, jobject thiz, jstring aKey, jstring aMessage, jstring aSignature, jobject aErrorMessage)
{
bool retCode = false;
- if(NULL == aBuffer2Ptr)
- {
- LOGD("## setRandomInBuffer(): failure - aBuffer=NULL");
- }
- else if(0 == aRandomSize)
- {
- LOGD("## setRandomInBuffer(): failure - random size=0");
- }
- else if(NULL == (*aBuffer2Ptr = (uint8_t*)malloc(aRandomSize*sizeof(uint8_t))))
- {
- LOGD("## setRandomInBuffer(): failure - alloc mem OOM");
- }
- else
- {
- LOGD("## setRandomInBuffer(): randomSize=%ld",aRandomSize);
- srand(time(NULL)); // init seed
- for(size_t i=0;i<aRandomSize;i++)
- {
- (*aBuffer2Ptr)[i] = (uint8_t)(rand()%ACCOUNT_CREATION_RANDOM_MODULO);
- // debug purpose
- //LOGD("## setRandomInBuffer(): randomBuffPtr[%ld]=%d",i, (*aBuffer2Ptr)[i]);
- }
- retCode = true;
- }
return retCode;
-}
-
-
-/**
-* Read the account instance ID of the calling object.
-* @param aJniEnv pointer pointing on the JNI function table
-* @param aJavaObject reference to the object on which the method is invoked
-* @return the instance ID if operation succeed, -1 if instance ID was not found.
-**/
-jlong getAccountInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
-{
- jlong instanceId=-1;
- jfieldID instanceIdField;
- jclass loaderClass;
-
- if(NULL!=aJniEnv)
- {
- if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
- {
- if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmAccountId", "J")))
- {
- instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField);
- aJniEnv->DeleteLocalRef(loaderClass);
- LOGD("## getAccountInstanceId(): read from java instanceId=%lld",instanceId);
- }
- else
- {
- LOGD("## getAccountInstanceId() ERROR! GetFieldID=null");
- }
- }
- else
- {
- LOGD("## getAccountInstanceId() ERROR! GetObjectClass=null");
- }
- }
- else
- {
- LOGD("## getAccountInstanceId() ERROR! aJniEnv=NULL");
- }
- LOGD("## getAccountInstanceId() success - instanceId=%lld",instanceId);
- return instanceId;
-}
-
-/**
-* Read the session instance ID of the calling object (aJavaObject).<br>
-* @param aJniEnv pointer pointing on the JNI function table
-* @param aJavaObject reference to the object on which the method is invoked
-* @return the instance ID if read succeed, -1 otherwise.
-**/
-jlong getSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
-{
- jlong instanceId=-1;
- jfieldID instanceIdField;
- jclass loaderClass;
-
- if(NULL!=aJniEnv)
- {
- if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
- {
- if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmSessionId", "J")))
- {
- instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField);
- aJniEnv->DeleteLocalRef(loaderClass);
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! GetFieldID=null");
- }
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! GetObjectClass=null");
- }
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! aJniEnv=NULL");
- }
-
- //LOGD("## getSessionInstanceId() success - instanceId=%lld",instanceId);
- return instanceId;
-}
-
-
-/**
-* Read the inbound group session instance ID of the calling object (aJavaObject).<br>
-* @param aJniEnv pointer pointing on the JNI function table
-* @param aJavaObject reference to the object on which the method is invoked
-* @return the instance ID if read succeed, -1 otherwise.
-**/
-jlong getInboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
-{
- jlong instanceId=-1;
- jfieldID instanceIdField;
- jclass loaderClass;
-
- if(NULL!=aJniEnv)
- {
- if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
- {
- if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmInboundGroupSessionId", "J")))
- {
- instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField);
- aJniEnv->DeleteLocalRef(loaderClass);
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! GetFieldID=null");
- }
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! GetObjectClass=null");
- }
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! aJniEnv=NULL");
- }
-
- return instanceId;
-}
-
-
-/**
-* Read the outbound group session instance ID of the calling object (aJavaObject).<br>
-* @param aJniEnv pointer pointing on the JNI function table
-* @param aJavaObject reference to the object on which the method is invoked
-* @return the instance ID if read succeed, -1 otherwise.
-**/
-jlong getOutboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject)
-{
- jlong instanceId=-1;
- jfieldID instanceIdField;
- jclass loaderClass;
-
- if(NULL!=aJniEnv)
- {
- if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject)))
- {
- if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmOutboundGroupSessionId", "J")))
- {
- instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField);
- aJniEnv->DeleteLocalRef(loaderClass);
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! GetFieldID=null");
- }
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! GetObjectClass=null");
- }
- }
- else
- {
- LOGD("## getSessionInstanceId() ERROR! aJniEnv=NULL");
- }
-
- return instanceId;
-}
+} \ No newline at end of file