signMessage : the utf8 conversion is done on Java side.
This commit is contained in:
parent
e17eb69048
commit
c3eb050be2
3 changed files with 46 additions and 37 deletions
|
@ -383,9 +383,25 @@ public class OlmAccount extends CommonSerializeUtils implements Serializable {
|
|||
* @return the signed message if operation succeed, null otherwise
|
||||
*/
|
||||
public String signMessage(String aMessage) {
|
||||
return signMessageJni(aMessage);
|
||||
if (null == aMessage) {
|
||||
return null;
|
||||
}
|
||||
private native String signMessageJni(String aMessage);
|
||||
|
||||
byte[] utf8String = null;
|
||||
|
||||
try {
|
||||
utf8String = aMessage.getBytes("UTF-8");
|
||||
} catch (Exception e) {
|
||||
Log.d(LOG_TAG,"## signMessage(): failed ="+e.getMessage());
|
||||
}
|
||||
|
||||
if (null == utf8String) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return signMessageJni(utf8String);
|
||||
}
|
||||
private native String signMessageJni(byte[] aMessage);
|
||||
|
||||
/**
|
||||
* Return the number of unreleased OlmAccount instances.<br>
|
||||
|
|
|
@ -393,7 +393,7 @@ JNIEXPORT jint OLM_ACCOUNT_FUNC_DEF(markOneTimeKeysAsPublishedJni)(JNIEnv *env,
|
|||
* @param aMessage message to sign
|
||||
* @return the signed message, null otherwise
|
||||
**/
|
||||
JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz, jstring aMessage)
|
||||
JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz, jbyteArray aMessage)
|
||||
{
|
||||
OlmAccount* accountPtr = NULL;
|
||||
size_t signatureLength;
|
||||
|
@ -411,15 +411,9 @@ JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz
|
|||
}
|
||||
else
|
||||
{
|
||||
// convert message from JAVA to C string
|
||||
const char* messageToSign = env->GetStringUTFChars(aMessage, 0);
|
||||
if(NULL == messageToSign)
|
||||
{
|
||||
LOGE("## signMessageJni(): failure - message JNI allocation OOM");
|
||||
}
|
||||
else
|
||||
{
|
||||
int messageLength = env->GetStringUTFLength(aMessage);
|
||||
int messageLength = env->GetArrayLength(aMessage);
|
||||
unsigned char* messageToSign = new unsigned char[messageLength];
|
||||
env->GetByteArrayRegion(aMessage, 0, messageLength, reinterpret_cast<jbyte*>(messageToSign));
|
||||
|
||||
// signature memory allocation
|
||||
signatureLength = olm_account_signature_length(accountPtr);
|
||||
|
@ -451,8 +445,7 @@ JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz
|
|||
}
|
||||
|
||||
// release messageToSign
|
||||
env->ReleaseStringUTFChars(aMessage, messageToSign);
|
||||
}
|
||||
free(messageToSign);
|
||||
}
|
||||
|
||||
return signedMsgRetValue;
|
||||
|
|
|
@ -43,7 +43,7 @@ JNIEXPORT jint OLM_ACCOUNT_FUNC_DEF(removeOneTimeKeysForSessionJni)(JNIEnv *env,
|
|||
JNIEXPORT jint OLM_ACCOUNT_FUNC_DEF(markOneTimeKeysAsPublishedJni)(JNIEnv *env, jobject thiz);
|
||||
|
||||
// signing
|
||||
JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz, jstring aMessage);
|
||||
JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz, jbyteArray aMessage);
|
||||
|
||||
// serialization
|
||||
JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(serializeDataWithKeyJni)(JNIEnv *env, jobject thiz, jstring aKey, jobject aErrorMsg);
|
||||
|
|
Loading…
Reference in a new issue