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
|
* @return the signed message if operation succeed, null otherwise
|
||||||
*/
|
*/
|
||||||
public String signMessage(String aMessage) {
|
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>
|
* 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
|
* @param aMessage message to sign
|
||||||
* @return the signed message, null otherwise
|
* @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;
|
OlmAccount* accountPtr = NULL;
|
||||||
size_t signatureLength;
|
size_t signatureLength;
|
||||||
|
@ -411,15 +411,9 @@ JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// convert message from JAVA to C string
|
int messageLength = env->GetArrayLength(aMessage);
|
||||||
const char* messageToSign = env->GetStringUTFChars(aMessage, 0);
|
unsigned char* messageToSign = new unsigned char[messageLength];
|
||||||
if(NULL == messageToSign)
|
env->GetByteArrayRegion(aMessage, 0, messageLength, reinterpret_cast<jbyte*>(messageToSign));
|
||||||
{
|
|
||||||
LOGE("## signMessageJni(): failure - message JNI allocation OOM");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int messageLength = env->GetStringUTFLength(aMessage);
|
|
||||||
|
|
||||||
// signature memory allocation
|
// signature memory allocation
|
||||||
signatureLength = olm_account_signature_length(accountPtr);
|
signatureLength = olm_account_signature_length(accountPtr);
|
||||||
|
@ -451,8 +445,7 @@ JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(signMessageJni)(JNIEnv *env, jobject thiz
|
||||||
}
|
}
|
||||||
|
|
||||||
// release messageToSign
|
// release messageToSign
|
||||||
env->ReleaseStringUTFChars(aMessage, messageToSign);
|
free(messageToSign);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return signedMsgRetValue;
|
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);
|
JNIEXPORT jint OLM_ACCOUNT_FUNC_DEF(markOneTimeKeysAsPublishedJni)(JNIEnv *env, jobject thiz);
|
||||||
|
|
||||||
// signing
|
// 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
|
// serialization
|
||||||
JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(serializeDataWithKeyJni)(JNIEnv *env, jobject thiz, jstring aKey, jobject aErrorMsg);
|
JNIEXPORT jstring OLM_ACCOUNT_FUNC_DEF(serializeDataWithKeyJni)(JNIEnv *env, jobject thiz, jstring aKey, jobject aErrorMsg);
|
||||||
|
|
Loading…
Reference in a new issue