From 0c9ce6cace0e5a7855dcebd3b1eca1bffec6da67 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 29 Oct 2018 12:09:01 +0100 Subject: [PATCH 01/15] Update engine version number and gradle buildtools version Android: v1.0.213 --- android/build.gradle | 2 +- android/src/org/pEp/jniadapter/AndroidHelper.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 63e12a8..88a0e62 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -31,7 +31,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 21 - buildToolsVersion '28.0.2' + buildToolsVersion '28.0.3' defaultConfig { minSdkVersion 18 diff --git a/android/src/org/pEp/jniadapter/AndroidHelper.java b/android/src/org/pEp/jniadapter/AndroidHelper.java index d5609f7..36b1256 100644 --- a/android/src/org/pEp/jniadapter/AndroidHelper.java +++ b/android/src/org/pEp/jniadapter/AndroidHelper.java @@ -29,7 +29,7 @@ public class AndroidHelper { private static File tmpDir; // TODO : Increment when needed. - public static int ENGINE_VERSION_CODE = 3063; + public static int ENGINE_VERSION_CODE = 3104; private static File shareDir; From 21ab55b3563cee8c3223023e2bdb7b0a184a959d Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 2 Nov 2018 12:05:25 +0100 Subject: [PATCH 02/15] Add -fPIC --- src/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Makefile b/src/Makefile index 2226b74..348c9dd 100644 --- a/src/Makefile +++ b/src/Makefile @@ -3,6 +3,8 @@ SHARED=libpEpJNI.so JAR=jniadapter.jar include Makefile.conf +CXXFLAGS+=-std=c++14 -fPIC + all: $(JAR) $(SHARED) JAVA_SOURCES=org/pEp/jniadapter/pEpException.java \ @@ -39,8 +41,10 @@ org_pEp_jniadapter_Message.h: org/pEp/jniadapter/Message.java javah $(subst /,.,$(subst .java,,$<)) org_pEp_jniadapter_AbstractEngine.o: %.o: %.cc %.h throw_pEp_exception.hh jniutils.hh + $(CXX) $(CXXFLAGS) -c $< -o $@ org_pEp_jniadapter_Engine.o org_pEp_jniadapter_Message.o: %.o: %.cc %.h + $(CXX) $(CXXFLAGS) -c $< -o $@ $(LIBRARY): org_pEp_jniadapter_AbstractEngine.o org_pEp_jniadapter_Engine.o org_pEp_jniadapter_Message.o throw_pEp_exception.o jniutils.o basic_api.o ar -r $@ *.o From db88b18a0d678bb529cb47355512cc3968766fcd Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 5 Nov 2018 14:09:46 +0100 Subject: [PATCH 03/15] Add missing pEp status to pEp.yml2 --- src/pEp.yml2 | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pEp.yml2 b/src/pEp.yml2 index 88f12fc..44d0c6b 100644 --- a/src/pEp.yml2 +++ b/src/pEp.yml2 @@ -21,14 +21,17 @@ namespace pEp { pEp_init_sqlite3_without_mutex > 0x0120 pEp_init_cannot_open_db > 0x0121 pEp_init_cannot_open_system_db > 0x0122 - + pEp_unknown_db_error > 0x01ff + pEp_key_not_found > 0x0201 pEp_key_has_ambig_name > 0x0202 pEp_get_key_failed > 0x0203 pEp_cannot_export_key > 0x0204 pEp_cannot_edit_key > 0x0205 pEp_key_unsuitable > 0x0206 - + pEp_malformed_key_reset_msg > 0x0210 + pEp_key_not_reset > 0x0211 + pEp_cannot_find_identity > 0x0301 pEp_cannot_set_person > 0x0381 pEp_cannot_set_pgp_keypair > 0x0382 @@ -70,6 +73,7 @@ namespace pEp { pEp_sync_no_inject_callback > 0x0903 pEp_sync_no_channel > 0x0904 pEp_sync_cannot_encrypt > 0x0905 + pEp_sync_no_message_send_callback > 0x0906 pEp_cannot_increase_sequence > 0x0971 @@ -80,6 +84,7 @@ namespace pEp { pEp_statemachine_invalid_condition > 0x0984 pEp_statemachine_invalid_action > 0x0985 pEp_statemachine_inhibited_event > 0x0986 + pEp_statemachine_cannot_semd > 0x0987 pEp_commit_failed > 0xff01 pEp_message_consume > 0xff02 From a8a7d2f92b9a8b59423bc07c062d9116a49d93c1 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 5 Nov 2018 14:12:39 +0100 Subject: [PATCH 04/15] fix typo --- src/pEp.yml2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pEp.yml2 b/src/pEp.yml2 index 44d0c6b..0a40c83 100644 --- a/src/pEp.yml2 +++ b/src/pEp.yml2 @@ -84,7 +84,7 @@ namespace pEp { pEp_statemachine_invalid_condition > 0x0984 pEp_statemachine_invalid_action > 0x0985 pEp_statemachine_inhibited_event > 0x0986 - pEp_statemachine_cannot_semd > 0x0987 + pEp_statemachine_cannot_send > 0x0987 pEp_commit_failed > 0xff01 pEp_message_consume > 0xff02 From 9a5775f4029a7b9d72c9ecd3fe5955802453476d Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 5 Nov 2018 20:58:52 +0100 Subject: [PATCH 05/15] Change runtime exception by error code. --- src/org/pEp/jniadapter/AbstractEngine.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/pEp/jniadapter/AbstractEngine.java b/src/org/pEp/jniadapter/AbstractEngine.java index ceda89d..ef49c6d 100644 --- a/src/org/pEp/jniadapter/AbstractEngine.java +++ b/src/org/pEp/jniadapter/AbstractEngine.java @@ -156,7 +156,7 @@ abstract class AbstractEngine implements AutoCloseable { if (needsFastPollCallback != null) { needsFastPollCallback.needsFastPollCallFromC(fast_poll_needed); } else { - throw new RuntimeException("Callback not set"); + return -1; } return 0; } @@ -168,7 +168,7 @@ abstract class AbstractEngine implements AutoCloseable { if (notifyHandshakeCallback != null) { notifyHandshakeCallback.notifyHandshake(myself, partner, _signal); } else { - throw new RuntimeException("Callback not set"); + return -1; } return 0; } @@ -177,7 +177,7 @@ abstract class AbstractEngine implements AutoCloseable { if (messageToSendCallback != null) { messageToSendCallback.messageToSend(message); } else { - throw new RuntimeException("Callback not set"); + return -1; } return 0; } From 866f2763a6e42ab0089fd3638ca9fd06e88506a1 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 5 Nov 2018 21:02:59 +0100 Subject: [PATCH 06/15] Use global refs --- src/org_pEp_jniadapter_AbstractEngine.cc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/org_pEp_jniadapter_AbstractEngine.cc b/src/org_pEp_jniadapter_AbstractEngine.cc index 8640629..47c2026 100644 --- a/src/org_pEp_jniadapter_AbstractEngine.cc +++ b/src/org_pEp_jniadapter_AbstractEngine.cc @@ -66,13 +66,13 @@ namespace pEp { void startup_sync() { needsFastPollMethodID = env()->GetMethodID( - _clazz, + engineClass, "needsFastPollCallFromC", "(Z)I"); assert(needsFastPollMethodID); notifyHandShakeMethodID = env()->GetMethodID( - _clazz, + engineClass, "notifyHandshakeCallFromC", "(Lorg/pEp/jniadapter/_Identity;Lorg/pEp/jniadapter/_Identity;Lorg/pEp/jniadapter/SyncHandshakeSignal;)I"); assert(notifyHandShakeMethodID); @@ -80,7 +80,7 @@ namespace pEp { void shutdown_sync() { - env()->DeleteLocalRef(messageClass); + env()->DeleteGlobalRef(messageClass); jvm->DetachCurrentThread(); } }; @@ -92,6 +92,9 @@ namespace pEp { jobject msg_ = nullptr; jint result = 0; + if (!o) + o = new JNISync(); + msg_ = o->env()->NewObject(messageClass, messageConstructorMethodID, (jlong) msg); result = o->env()->CallIntMethod(obj, messageToSendMethodID, msg_); @@ -150,7 +153,7 @@ extern "C" { env->GetJavaVM(&jvm); thread_env = env; - obj = me; + obj = env->NewGlobalRef(me); _clazz = env->GetObjectClass(obj); if (!o) @@ -188,7 +191,12 @@ extern "C" { ) { shutdown(); - env->DeleteLocalRef(_clazz); + + env->DeleteGlobalRef(identityClass); + env->DeleteGlobalRef(signalClass); + env->DeleteGlobalRef(engineClass); + env->DeleteGlobalRef(obj); + session(pEp::Adapter::release); delete o; } From 18722260d8f112e181ebb2cf01e4614cf05ee71f Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 5 Nov 2018 21:37:48 +0100 Subject: [PATCH 07/15] Add very basic test. --- src/AdapterTest.java | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/AdapterTest.java b/src/AdapterTest.java index 797e772..aa7d1c5 100644 --- a/src/AdapterTest.java +++ b/src/AdapterTest.java @@ -1,21 +1,39 @@ import org.pEp.jniadapter.*; class AdapterTest { + private final static String PEP_OWN_USER_ID = "pEp_own_userId"; + public static void main(String[] args) { System.out.println("running..."); Engine pEp; try { + + System.out.println("Creating identity"); + Identity alice = new Identity(); + alice.username = "Alice Test"; + alice.address = "pep.test.bla@bla.org"; + alice.user_id = PEP_OWN_USER_ID; + System.out.println("Identity Created"); + + System.out.println("Create engine instance"); pEp = new Engine(); + System.out.println("Setting callbacks"); + SyncCallbacks callbacks = new SyncCallbacks(); + pEp.setnotifyHandshakeCallback(callbacks); + pEp.setMessageToSendCallback(callbacks); + + System.out.println("Calling myself"); + alice = pEp.myself(alice); + System.out.println("Myself called : " + alice.fpr); + } catch (pEpException e) { System.out.println("ERROR: cannot initialize engine"); System.exit(1); } - SyncCallbacks callbacks = new SyncCallbacks(); System.out.println("... shutting down"); } } - From 3187279c344d82bac0e553199e88f5331e662794 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Tue, 6 Nov 2018 13:30:42 +0100 Subject: [PATCH 08/15] Fix Testing.java - Build again --- test/Testing.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/test/Testing.java b/test/Testing.java index 09f95f7..0516528 100644 --- a/test/Testing.java +++ b/test/Testing.java @@ -42,35 +42,39 @@ class Testing { msg.setShortmsg("hello, world"); msg.setLongmsg("this is a test"); + msg.setDir(Message.Direction.Outgoing); Message enc = null; try { - enc = e.encrypt_message(msg, null); + enc = e.encrypt_message(msg, null, Message.EncFormat.PEP); System.out.println("encrypted"); } catch (pEpException ex) { System.out.println("cannot encrypt"); + ex.printStackTrace(); } + System.out.println(enc.getLongmsg()); Vector attachments = enc.getAttachments(); System.out.println(e.toUTF16(attachments.get(1).data)); msg.setDir(Message.Direction.Outgoing); try { - System.out.println(e.outgoing_message_color(msg)); + System.out.println(e.outgoing_message_rating(msg)); } catch (pEpException ex) { - System.out.println("cannot measure outgoing message color"); + System.out.println("cannot measure outgoing message rating"); } Engine.decrypt_message_Return result = null; try { - result = e.decrypt_message(enc); + result = e.decrypt_message(enc, new Vector<>(), 0); System.out.println("decrypted"); } catch (pEpException ex) { System.out.println("cannot decrypt"); + ex.printStackTrace(); } System.out.println(result.dst.getShortmsg()); From 4b7ea748ebb931d189cd82d03a437c558197501e Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Tue, 6 Nov 2018 13:51:15 +0100 Subject: [PATCH 09/15] Explicitily generate a new key and use it to encrypt. --- test/Testing.java | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/test/Testing.java b/test/Testing.java index 0516528..ccbf966 100644 --- a/test/Testing.java +++ b/test/Testing.java @@ -15,6 +15,18 @@ class Testing { } System.out.println("Test loaded"); + // Keygen + System.out.println("Generating keys: "); + Identity user = new Identity(); + user.user_id = "pEp_own_userId"; + user.me = true; + user.username = "Test User"; + user.address = "jniTestUser@peptest.ch"; + user = e.myself(user); + System.out.print("Keys generated: "); + System.out.println(user.fpr); + + // trustwords Identity vb = new Identity(); vb.fpr = "DB4713183660A12ABAFA7714EBE90D44146F62F4"; @@ -25,19 +37,14 @@ class Testing { // message Message msg = new Message(); - Identity from = new Identity(); - from.username = "Volker Birk"; - from.address = "vb@dingens.org"; - from.user_id = "23"; - from.me = true; - msg.setFrom(from); + msg.setFrom(user); Vector to = new Vector(); Identity to1 = new Identity(); - to1.username = "Volker Birk"; - to1.address = "vb@pep-project.org"; - to1.user_id = "42"; - to.add(to1); + //to1.username = "Volker Birk"; + //to1.address = "vb@pep-project.org"; + //to1.user_id = "42"; + to.add(user); msg.setTo(to); msg.setShortmsg("hello, world"); From d73122d1a537f5976d7dc61f8ccb17e95b859163 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Wed, 7 Nov 2018 11:53:24 +0100 Subject: [PATCH 10/15] Make Message.java Serializable SerializableUID generated by Intellij --- src/gen_java_Message.ysl2 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 34d235c..10da80a 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -16,8 +16,10 @@ tstylesheet { import java.util.Vector; import java.util.Date; import java.util.HashMap; + import java.io.Serializable; - public class «$cname» implements AutoCloseable { + public class «$cname» implements AutoCloseable, Serializable { + private static final long serialVersionUID = 2119420428331150924L; private long handle; native long init(); From 6972cc12fca444ab2ff2ded9bcb35b089247745f Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 30 Nov 2018 10:40:11 +0100 Subject: [PATCH 11/15] Set empty String by default aka when null. --- src/gen_java_Message.ysl2 | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 10da80a..1298ef7 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -163,7 +163,27 @@ tstylesheet { || } - + + when "$itype != $type" + || + private native «$itype» _get«$name»(); + private native void _set«$name»(«$itype» value); + public «$type» get«$name»() { + «$itype» res = _get«$name»(); + if(res != null) + return AbstractEngine.toUTF16(res); + else + return null; + } + public void set«$name»(«$type» value) { + if(value != null) + _set«$name»(AbstractEngine.toUTF8(value)); + else + _set«$name»(new byte[0]); + } + + || + when "$itype != $type" || private native «$itype» _get«$name»(); From 0e478fd6df684775654fb5dd9b49c110ae8e295e Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 30 Nov 2018 10:48:44 +0100 Subject: [PATCH 12/15] Add default Sync callback and fix env retrieval --- src/org/pEp/jniadapter/AbstractEngine.java | 14 ++++--- src/org/pEp/jniadapter/Sync.java | 30 +++++++++++--- src/org_pEp_jniadapter_AbstractEngine.cc | 48 ++++++++++++++-------- 3 files changed, 64 insertions(+), 28 deletions(-) diff --git a/src/org/pEp/jniadapter/AbstractEngine.java b/src/org/pEp/jniadapter/AbstractEngine.java index ef49c6d..326e60e 100644 --- a/src/org/pEp/jniadapter/AbstractEngine.java +++ b/src/org/pEp/jniadapter/AbstractEngine.java @@ -2,6 +2,9 @@ package org.pEp.jniadapter; import java.util.ArrayList; import java.util.Vector; + +import org.pEp.jniadapter.Sync.DefaultCallback; + import java.io.UnsupportedEncodingException; import java.text.Normalizer; @@ -11,9 +14,10 @@ abstract class AbstractEngine implements AutoCloseable { } private Sync.MessageToSendCallback messageToSendCallback; - private Sync.notifyHandshakeCallback notifyHandshakeCallback; + private Sync.NotifyHandshakeCallback notifyHandshakeCallback; private Sync.NeedsFastPollCallback needsFastPollCallback; + private final static DefaultCallback defaultCallback = new DefaultCallback(); private native void init(); private native void release(); @@ -144,7 +148,7 @@ abstract class AbstractEngine implements AutoCloseable { this.messageToSendCallback = messageToSendCallback; } - public void setnotifyHandshakeCallback(Sync.notifyHandshakeCallback notifyHandshakeCallback) { + public void setNotifyHandshakeCallback(Sync.NotifyHandshakeCallback notifyHandshakeCallback) { this.notifyHandshakeCallback = notifyHandshakeCallback; } @@ -156,7 +160,7 @@ abstract class AbstractEngine implements AutoCloseable { if (needsFastPollCallback != null) { needsFastPollCallback.needsFastPollCallFromC(fast_poll_needed); } else { - return -1; + defaultCallback.needsFastPollCallFromC(fast_poll_needed); } return 0; } @@ -168,7 +172,7 @@ abstract class AbstractEngine implements AutoCloseable { if (notifyHandshakeCallback != null) { notifyHandshakeCallback.notifyHandshake(myself, partner, _signal); } else { - return -1; + defaultCallback.notifyHandshake(myself, partner, _signal); } return 0; } @@ -177,7 +181,7 @@ abstract class AbstractEngine implements AutoCloseable { if (messageToSendCallback != null) { messageToSendCallback.messageToSend(message); } else { - return -1; + defaultCallback.messageToSend(message); } return 0; } diff --git a/src/org/pEp/jniadapter/Sync.java b/src/org/pEp/jniadapter/Sync.java index 5d32705..472e420 100644 --- a/src/org/pEp/jniadapter/Sync.java +++ b/src/org/pEp/jniadapter/Sync.java @@ -4,10 +4,6 @@ import org.pEp.jniadapter.Identity; import org.pEp.jniadapter.Message; import org.pEp.jniadapter.pEpException; -/** - * Created by huss on 02/09/16. - */ - public interface Sync { @@ -19,8 +15,32 @@ public interface Sync { void messageToSend(Message message); } - interface notifyHandshakeCallback { + interface NotifyHandshakeCallback { void notifyHandshake(Identity myself, Identity partner, SyncHandshakeSignal signal); } + + public class DefaultCallback + implements Sync.MessageToSendCallback, Sync.NotifyHandshakeCallback, Sync.NeedsFastPollCallback { + //FIXME: Find where this Exceptions ara catched as they are called but on + //Testing.java there is no crash not crashing + @Override + public void needsFastPollCallFromC(Boolean fast_poll_needed) { + System.out.println("Throwing illegal"); + throw new RuntimeException("Fast poll Callback not set"); + } + + @Override + public void messageToSend(Message message) { + System.out.println("Throwing illegal"); + throw new RuntimeException("Message to send not set"); + } + + @Override + public void notifyHandshake(Identity myself, Identity partner, SyncHandshakeSignal signal) { + System.out.println("Throwing illegal"); + throw new RuntimeException("Notify Handshake not set"); + } + } + } diff --git a/src/org_pEp_jniadapter_AbstractEngine.cc b/src/org_pEp_jniadapter_AbstractEngine.cc index 47c2026..f51d251 100644 --- a/src/org_pEp_jniadapter_AbstractEngine.cc +++ b/src/org_pEp_jniadapter_AbstractEngine.cc @@ -19,6 +19,13 @@ std::ofstream debug_log("debug.log"); #include "throw_pEp_exception.hh" #include "jniutils.hh" +#ifdef ANDROID +#define ATTACH_CURRENT_THREAD(env, args) jvm->AttachCurrentThread(&env, args); +#else +#define ATTACH_CURRENT_THREAD(env, args) jvm->AttachCurrentThread((void **) &env, args); +#endif + + namespace pEp { using namespace pEp::JNIAdapter; using namespace pEp::Adapter; @@ -47,15 +54,15 @@ namespace pEp { JNIEnv *_env; if (on_sync_thread()) { - _env = first_env; + // FIXME: REview if this is the way to go or not + int getEnvStat = jvm->GetEnv((void **) &_env, JNI_VERSION_1_6); + if (getEnvStat == JNI_EDETACHED) { + ATTACH_CURRENT_THREAD(_env, nullptr); + } } else { if (!thread_env) { - #ifdef ANDROID - jvm->AttachCurrentThread(&thread_env, nullptr); - #else - jvm->AttachCurrentThread((void **) &thread_env, nullptr); - #endif + ATTACH_CURRENT_THREAD(thread_env, nullptr); } _env = thread_env; } @@ -65,17 +72,7 @@ namespace pEp { void startup_sync() { - needsFastPollMethodID = env()->GetMethodID( - engineClass, - "needsFastPollCallFromC", - "(Z)I"); - assert(needsFastPollMethodID); - notifyHandShakeMethodID = env()->GetMethodID( - engineClass, - "notifyHandshakeCallFromC", - "(Lorg/pEp/jniadapter/_Identity;Lorg/pEp/jniadapter/_Identity;Lorg/pEp/jniadapter/SyncHandshakeSignal;)I"); - assert(notifyHandShakeMethodID); } void shutdown_sync() @@ -94,7 +91,6 @@ namespace pEp { if (!o) o = new JNISync(); - msg_ = o->env()->NewObject(messageClass, messageConstructorMethodID, (jlong) msg); result = o->env()->CallIntMethod(obj, messageToSendMethodID, msg_); @@ -173,7 +169,7 @@ extern "C" { if (!messageConstructorMethodID) messageConstructorMethodID = env->GetMethodID(messageClass, "", "(J)V"); - + if (!messageToSendMethodID) { messageToSendMethodID = env->GetMethodID( engineClass, @@ -182,6 +178,22 @@ extern "C" { assert(messageToSendMethodID); } + if (!needsFastPollMethodID) { + needsFastPollMethodID = env->GetMethodID( + engineClass, + "needsFastPollCallFromC", + "(Z)I"); + assert(needsFastPollMethodID); + } + + if (!notifyHandShakeMethodID) { + notifyHandShakeMethodID = env->GetMethodID( + engineClass, + "notifyHandshakeCallFromC", + "(Lorg/pEp/jniadapter/_Identity;Lorg/pEp/jniadapter/_Identity;Lorg/pEp/jniadapter/SyncHandshakeSignal;)I"); + assert(notifyHandShakeMethodID); + } + startup(messageToSend, notifyHandshake, o, &JNISync::startup_sync, &JNISync::shutdown_sync); } From 772988f5570427c5f2ac066b683f3dabd990e1df Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 30 Nov 2018 10:57:48 +0100 Subject: [PATCH 13/15] Adapt test to call callbacks... --- test/Makefile | 2 +- {src => test}/SyncCallbacks.java | 2 +- test/Testing.java | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) rename {src => test}/SyncCallbacks.java (92%) diff --git a/test/Makefile b/test/Makefile index 5d06bb5..47797c0 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,7 +1,7 @@ CLASSPATH=.:../src VM=java -Djava.library.path=../src -test: Testing.class +test: Testing.class SyncCallbacks.class CLASSPATH=$(CLASSPATH) $(VM) Testing %.class: %.java diff --git a/src/SyncCallbacks.java b/test/SyncCallbacks.java similarity index 92% rename from src/SyncCallbacks.java rename to test/SyncCallbacks.java index 8963b71..a5fc61c 100644 --- a/src/SyncCallbacks.java +++ b/test/SyncCallbacks.java @@ -1,6 +1,6 @@ import org.pEp.jniadapter.*; -class SyncCallbacks implements Sync.MessageToSendCallback, Sync.notifyHandshakeCallback { +class SyncCallbacks implements Sync.MessageToSendCallback, Sync.NotifyHandshakeCallback { public void messageToSend(Message message) { System.out.println(message.getFrom()); diff --git a/test/Testing.java b/test/Testing.java index ccbf966..970ff26 100644 --- a/test/Testing.java +++ b/test/Testing.java @@ -8,6 +8,9 @@ class Testing { // load try { e = new Engine(); + SyncCallbacks callbacks = new SyncCallbacks(); + e.setNotifyHandshakeCallback(callbacks); + e.setMessageToSendCallback(callbacks); } catch (pEpException ex) { System.out.println("Cannot load"); @@ -26,7 +29,7 @@ class Testing { System.out.print("Keys generated: "); System.out.println(user.fpr); - + // trustwords Identity vb = new Identity(); vb.fpr = "DB4713183660A12ABAFA7714EBE90D44146F62F4"; @@ -86,6 +89,11 @@ class Testing { System.out.println(result.dst.getShortmsg()); System.out.println(result.dst.getLongmsg()); + System.out.println("TEST DONE - FINISHED"); + System.exit(0); } + + + } From a204c0565bf7dbc3cc8eee84653b0eadb403a8c9 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Wed, 5 Dec 2018 19:35:12 +0100 Subject: [PATCH 14/15] Add disable sync switch for keyrest and so on... --- src/AdapterTest.java | 2 +- src/Makefile.conf | 2 +- src/gen_cpp_Engine.ysl2 | 1 + src/gen_java_Engine.ysl2 | 7 +++++- src/org_pEp_jniadapter_AbstractEngine.cc | 11 +++++++++- src/pEp.yml2 | 7 +++++- test/Makefile | 1 + test/SyncCallbacks.java | 14 ++++++++++-- test/Testing.java | 28 +++++++++++++++++++++--- 9 files changed, 63 insertions(+), 10 deletions(-) diff --git a/src/AdapterTest.java b/src/AdapterTest.java index aa7d1c5..b5a00c4 100644 --- a/src/AdapterTest.java +++ b/src/AdapterTest.java @@ -20,7 +20,7 @@ class AdapterTest { pEp = new Engine(); System.out.println("Setting callbacks"); SyncCallbacks callbacks = new SyncCallbacks(); - pEp.setnotifyHandshakeCallback(callbacks); + pEp.setNotifyHandshakeCallback(callbacks); pEp.setMessageToSendCallback(callbacks); System.out.println("Calling myself"); diff --git a/src/Makefile.conf b/src/Makefile.conf index 567b8ad..e5fd198 100644 --- a/src/Makefile.conf +++ b/src/Makefile.conf @@ -1,3 +1,3 @@ -CXXFLAGS=-I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -I$(HOME)/include -fpermissive +CXXFLAGS=-I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -I$(HOME)/include -fpermissive -DDISABLE_SYNC LDFLAGS=-L$(HOME)/lib SHARED=libpEpJNI.dylib diff --git a/src/gen_cpp_Engine.ysl2 b/src/gen_cpp_Engine.ysl2 index 3b65d34..2406445 100644 --- a/src/gen_cpp_Engine.ysl2 +++ b/src/gen_cpp_Engine.ysl2 @@ -13,6 +13,7 @@ tstylesheet { #include #include #include + #include #include #include "org_pEp_jniadapter_«@name».h" #include "throw_pEp_exception.hh" diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index a2e8f9c..1840873 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -278,7 +278,12 @@ tstylesheet { when "$type = 'string' or $type = 'stringlist'" | ¡$type _«$name» = AbstractEngine.toUTF8(«$name»); when "$type = 'identity'" - | _Identity _«$name» = new _Identity(«$name»); + || + _Identity _«$name» = null; + if («$name» != null) { + _«$name» = new _Identity(«$name»); + } + || } } diff --git a/src/org_pEp_jniadapter_AbstractEngine.cc b/src/org_pEp_jniadapter_AbstractEngine.cc index f51d251..25bb1a8 100644 --- a/src/org_pEp_jniadapter_AbstractEngine.cc +++ b/src/org_pEp_jniadapter_AbstractEngine.cc @@ -194,7 +194,16 @@ extern "C" { assert(notifyHandShakeMethodID); } - startup(messageToSend, notifyHandshake, o, &JNISync::startup_sync, &JNISync::shutdown_sync); + thread_local static PEP_SESSION _session = nullptr; + PEP_STATUS status = PEP_STATUS_OK; + + #ifdef DISABLE_SYNC + _messageToSend = messageToSend; + session(); + + #else + startup(messageToSend, notifyHandshake, o, &JNISync::startup_sync, &JNISync::shutdown_sync); + #endif } JNIEXPORT void JNICALL Java_org_pEp_jniadapter_AbstractEngine_release( diff --git a/src/pEp.yml2 b/src/pEp.yml2 index 0a40c83..bd55c81 100644 --- a/src/pEp.yml2 +++ b/src/pEp.yml2 @@ -262,7 +262,12 @@ namespace pEp { returns string languagelist ); - basic string trustwords(identity ident); + method key_reset( + in string fpr, + in identity ident + ); + + basic string trustwords(identity ident); basic identity myself(identity ident); basic identity updateIdentity(identity ident); basic identity setOwnKey(identity ident, string fpr); diff --git a/test/Makefile b/test/Makefile index 47797c0..33e3a59 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,4 +1,5 @@ CLASSPATH=.:../src +#VM=java -Xcheck:jni -Djava.library.path=../src VM=java -Djava.library.path=../src test: Testing.class SyncCallbacks.class diff --git a/test/SyncCallbacks.java b/test/SyncCallbacks.java index a5fc61c..5395745 100644 --- a/test/SyncCallbacks.java +++ b/test/SyncCallbacks.java @@ -3,12 +3,22 @@ import org.pEp.jniadapter.*; class SyncCallbacks implements Sync.MessageToSendCallback, Sync.NotifyHandshakeCallback { public void messageToSend(Message message) { - System.out.println(message.getFrom()); + System.out.println("================================"); + System.out.println("Message to send called"); + System.out.println("From: " + message.getFrom()); + System.out.println("To: " + message.getTo()); + System.out.println("Subject: " + message.getShortmsg()); + System.out.println("================================"); } public void notifyHandshake(Identity myself, Identity partner, SyncHandshakeSignal signal) { - + System.out.println("================================"); + System.out.println("Notify handshake called"); + System.out.println("Myself: " + myself); + System.out.println("Partner: " + partner); + System.out.println("Signal: " + signal); + System.out.println("================================"); } } diff --git a/test/Testing.java b/test/Testing.java index 970ff26..913b5c8 100644 --- a/test/Testing.java +++ b/test/Testing.java @@ -1,7 +1,18 @@ import org.pEp.jniadapter.*; import java.util.Vector; - +import java.net.URL; +import java.net.URLClassLoader; class Testing { + + public void printClassPath() { + ClassLoader cl = ClassLoader.getSystemClassLoader(); + + URL[] urls = ((URLClassLoader)cl).getURLs(); + + for(URL url: urls){ + System.out.println(url.getFile()); + } + } public static void main(String[] args) { Engine e; @@ -46,7 +57,9 @@ class Testing { Identity to1 = new Identity(); //to1.username = "Volker Birk"; //to1.address = "vb@pep-project.org"; + //to1.address = "android01@peptest.ch"; //to1.user_id = "42"; + //to.add(to1); to.add(user); msg.setTo(to); @@ -89,8 +102,17 @@ class Testing { System.out.println(result.dst.getShortmsg()); System.out.println(result.dst.getLongmsg()); - System.out.println("TEST DONE - FINISHED"); - System.exit(0); + System.out.println("TEST DONE - FINISHED"); + + try { + e.startSync(); + e.key_reset(null, null); + } + catch (pEpException ex) { + System.out.println("cannot reset all own keys"); + ex.printStackTrace(); + } + System.exit(0); } From 8e1deb894d027ad7d5f71354c4fc8cb4b2b6843b Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Wed, 5 Dec 2018 19:49:56 +0100 Subject: [PATCH 15/15] Fix testing,java - and use build using o files instead of lib.a *WORKARROUND* --- src/Makefile | 4 ++-- src/Makefile.conf | 1 + test/Testing.java | 1 - 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Makefile b/src/Makefile index 50be340..730cf18 100644 --- a/src/Makefile +++ b/src/Makefile @@ -50,8 +50,8 @@ $(LIBRARY): org_pEp_jniadapter_AbstractEngine.o org_pEp_jniadapter_Engine.o org_ ar -r $@ *.o $(SHARED): $(LIBRARY) - $(CXX) $(CXXFLAGS) -shared -o $(SHARED) $(LDFLAGS) -lpEpEngine -lpEpAdapter *.o - + $(CXX) $(CXXFLAGS) -shared -o $(SHARED) $(LDFLAGS) -lpEpEngine $(PEP_ADAPTER_OBJECT_LIB)/*.o *.o +#FIXME ^ use libpEpAdapter.a instad of the bunch of *.o org/pEp/jniadapter/pEpException.java: pEp.yml2 gen_java_exceptions.ysl2 yml2proc -y gen_java_exceptions.ysl2 $< -o $@ diff --git a/src/Makefile.conf b/src/Makefile.conf index e5fd198..11fb910 100644 --- a/src/Makefile.conf +++ b/src/Makefile.conf @@ -1,3 +1,4 @@ CXXFLAGS=-I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -I$(HOME)/include -fpermissive -DDISABLE_SYNC LDFLAGS=-L$(HOME)/lib SHARED=libpEpJNI.dylib +PEP_ADAPTER_OBJECT_LIB=$(HOMEI)/pEp/libpEpAdapter diff --git a/test/Testing.java b/test/Testing.java index 913b5c8..8418af6 100644 --- a/test/Testing.java +++ b/test/Testing.java @@ -105,7 +105,6 @@ class Testing { System.out.println("TEST DONE - FINISHED"); try { - e.startSync(); e.key_reset(null, null); } catch (pEpException ex) {