Simplify signMessageJni

release-v2.2.0
ylecollen 2017-01-02 14:41:54 +01:00
parent 60bcf865d0
commit b893b81c82
1 changed files with 50 additions and 49 deletions

View File

@ -413,17 +413,18 @@ JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz
else else
{ {
int messageLength = env->GetArrayLength(aMessage); int messageLength = env->GetArrayLength(aMessage);
unsigned char* messageToSign = new unsigned char[messageLength]; jbyte* messageToSign = env->GetByteArrayElements(aMessage, NULL);
env->GetByteArrayRegion(aMessage, 0, messageLength, reinterpret_cast<jbyte*>(messageToSign));
// signature memory allocation // signature memory allocation
signatureLength = olm_account_signature_length(accountPtr); signatureLength = olm_account_signature_length(accountPtr);
if(NULL == (signedMsgPtr = (void*)malloc((signatureLength+1)*sizeof(uint8_t)))) if(NULL == (signedMsgPtr = (void*)malloc((signatureLength+1)*sizeof(uint8_t))))
{ {
LOGE("## signMessageJni(): failure - signature allocation OOM"); LOGE("## signMessageJni(): failure - signature allocation OOM");
} }
else else
{ // sign message {
// sign message
resultSign = olm_account_sign(accountPtr, resultSign = olm_account_sign(accountPtr,
(void*)messageToSign, (void*)messageToSign,
(size_t)messageLength, (size_t)messageLength,
@ -446,15 +447,15 @@ JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz
} }
// release messageToSign // release messageToSign
free(messageToSign); if (messageToSign)
{
env->ReleaseByteArrayElements(aMessage, messageToSign, JNI_ABORT);
}
} }
return signedMsgRetValue; return signedMsgRetValue;
} }
/** /**
* Serialize and encrypt account instance into a base64 string.<br> * Serialize and encrypt account instance into a base64 string.<br>
* @param aKey key used to encrypt the serialized account data * @param aKey key used to encrypt the serialized account data