diff --git a/src/foundation/pEp/jniadapter/AbstractEngine.java b/src/foundation/pEp/jniadapter/AbstractEngine.java index 323461a..4b0fffe 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngine.java +++ b/src/foundation/pEp/jniadapter/AbstractEngine.java @@ -186,6 +186,10 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AutoClosea return 0; } + public byte[] passphraseRequiredFromC() { + return toUTF8("passphrase_alice"); + } + public int messageToSendCallFromC (Message message) { System.out.println("pEpSync" + "messageToSendCallFromC: " + messageToSendCallback ); if (messageToSendCallback != null) { diff --git a/src/foundation_pEp_jniadapter_AbstractEngine.cc b/src/foundation_pEp_jniadapter_AbstractEngine.cc index bde852c..e2a26d4 100644 --- a/src/foundation_pEp_jniadapter_AbstractEngine.cc +++ b/src/foundation_pEp_jniadapter_AbstractEngine.cc @@ -26,6 +26,7 @@ jmethodID messageConstructorMethodID = nullptr; jmethodID messageToSendMethodID = nullptr; jmethodID notifyHandShakeMethodID = nullptr; jmethodID needsFastPollMethodID = nullptr; +jmethodID passphraseRequiredMethodID = nullptr; jmethodID method_values = nullptr; jobject objj = nullptr; @@ -86,6 +87,10 @@ void jni_init() { engineClass, "notifyHandshakeCallFromC", "(Lfoundation/pEp/jniadapter/_Identity;Lfoundation/pEp/jniadapter/_Identity;Lfoundation/pEp/jniadapter/SyncHandshakeSignal;)I"); + passphraseRequiredMethodID = _env->GetMethodID( + engineClass, + "passphraseRequiredFromC", + "()[B"); method_values = JNISync::env()->GetStaticMethodID(signalClass, "values", "()[Lfoundation/pEp/jniadapter/SyncHandshakeSignal;"); @@ -94,7 +99,22 @@ void jni_init() { char* JNIAdapter::passphraseRequiredCallback() { pEpLog("called"); - return "passphrase_alice"; + + assert(objj && passphraseRequiredMethodID); + + jobject ppJO = JNISync::env()->CallObjectMethod(objj, passphraseRequiredMethodID); + if (JNISync::env()->ExceptionCheck()) { + JNISync::env()->ExceptionDescribe(); + JNISync::env()->ExceptionClear(); + } + + jbyteArray ppJBA = reinterpret_cast(ppJO); + char* passphrase_ = to_string( JNISync::env(), ppJBA); + + pEpLog("fromJava: " << passphrase_); + JNISync::env()->DeleteLocalRef(ppJO); + + return passphrase_; } PEP_STATUS messageToSend(message *msg)