From 81cee0aea7d2179e477a0cf46ccd130791644870 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Thu, 26 Jul 2018 16:42:58 +0200 Subject: [PATCH 1/7] backout 3086ac9d262c7726336f585a2a5b1d8be819f557 to unstrip identity->me --- src/basic_api.cc | 20 ++++++++++++++++---- src/jniutils.cc | 9 +++++++++ src/org/pEp/jniadapter/Identity.java | 8 ++++++++ src/org/pEp/jniadapter/_Identity.java | 7 +++++++ 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/basic_api.cc b/src/basic_api.cc index a7e869c..6be089b 100644 --- a/src/basic_api.cc +++ b/src/basic_api.cc @@ -24,7 +24,10 @@ JNIEXPORT jobject JNICALL Java_org_pEp_jniadapter_Engine_trustwords( size_t wsize; if (_ident->fpr == NULL || _ident->fpr[0] == 0) { - ::update_identity(session, _ident); + if (_ident->me) + ::myself(session, _ident); + else + ::update_identity(session, _ident); } if (_ident->fpr == NULL || _ident->fpr[0] == 0) { @@ -101,7 +104,10 @@ JNIEXPORT void JNICALL Java_org_pEp_jniadapter_Engine_keyMistrusted( pEp_identity *_ident = to_identity(env, ident); if (_ident->fpr == NULL || _ident->fpr[0] == 0) { - ::update_identity(session, _ident); + if (_ident->me) + ::myself(session, _ident); + else + ::update_identity(session, _ident); } if (_ident->fpr == NULL || _ident->fpr[0] == 0) { @@ -122,7 +128,10 @@ JNIEXPORT void JNICALL Java_org_pEp_jniadapter_Engine_keyResetTrust( pEp_identity *_ident = to_identity(env, ident); if (_ident->fpr == NULL || _ident->fpr[0] == 0) { - ::update_identity(session, _ident); + if (_ident->me) + ::myself(session, _ident); + else + ::update_identity(session, _ident); } if (_ident->fpr == NULL || _ident->fpr[0] == 0) { @@ -143,7 +152,10 @@ JNIEXPORT void JNICALL Java_org_pEp_jniadapter_Engine_trustPersonalKey( pEp_identity *_ident = to_identity(env, ident); if (_ident->fpr == NULL || _ident->fpr[0] == 0) { - ::update_identity(session, _ident); + if (_ident->me) + ::myself(session, _ident); + else + ::update_identity(session, _ident); } if (_ident->fpr == NULL || _ident->fpr[0] == 0) { diff --git a/src/jniutils.cc b/src/jniutils.cc index 000465b..225b3b3 100644 --- a/src/jniutils.cc +++ b/src/jniutils.cc @@ -460,6 +460,9 @@ namespace pEp { _setStringField(env, classname, obj, "lang", ident->lang); + jfieldID me_id = getFieldID(env, classname, "me", "Z"); + env->SetBooleanField(obj, me_id, (jboolean) ident->me); + jfieldID flags_id = getFieldID(env, classname, "flags", "I"); env->SetIntField(obj, flags_id, (jint) (int) ident->flags); } @@ -489,6 +492,9 @@ namespace pEp { _setStringField(env, classname, obj, "lang", ident->lang, identityClass); + jfieldID me_id = getFieldID(env, classname, "me", "Z", identityClass); + env->SetBooleanField(obj, me_id, (jboolean) ident->me); + jfieldID flags_id = getFieldID(env, classname, "flags", "I", identityClass); env->SetIntField(obj, flags_id, (jint) (int) ident->flags); } @@ -531,6 +537,9 @@ namespace pEp { } free(lang); + jfieldID me_id = getFieldID(env, classname, "me", "Z"); + ident->me = (bool) env->GetBooleanField(obj, me_id); + jfieldID flags_id = getFieldID(env, classname, "flags", "I"); ident->flags = (identity_flags_t) (int) env->GetIntField(obj, flags_id); diff --git a/src/org/pEp/jniadapter/Identity.java b/src/org/pEp/jniadapter/Identity.java index f31d8c0..56478a6 100644 --- a/src/org/pEp/jniadapter/Identity.java +++ b/src/org/pEp/jniadapter/Identity.java @@ -9,9 +9,16 @@ public class Identity implements Serializable{ public String username; public CommType comm_type; public String lang; + public boolean me; public int flags; public Identity() { + this.me = false; + comm_type = CommType.PEP_ct_unknown; + } + + public Identity(boolean me) { + this.me = me; comm_type = CommType.PEP_ct_unknown; } @@ -22,6 +29,7 @@ public class Identity implements Serializable{ username = AbstractEngine.toUTF16(i.username); comm_type = CommType.Management.tag.get(i.comm_type); lang = AbstractEngine.toUTF16(i.lang); + me = i.me; flags = i.flags; } diff --git a/src/org/pEp/jniadapter/_Identity.java b/src/org/pEp/jniadapter/_Identity.java index e9dfe5b..28b721a 100644 --- a/src/org/pEp/jniadapter/_Identity.java +++ b/src/org/pEp/jniadapter/_Identity.java @@ -7,9 +7,15 @@ public class _Identity { public byte[] username; public int comm_type; public byte[] lang; + public boolean me; public int flags; public _Identity() { + this.me = false; + } + + public _Identity(boolean me) { + this.me = me; } public _Identity(Identity i) { @@ -19,6 +25,7 @@ public class _Identity { username = AbstractEngine.toUTF8(i.username); comm_type = i.comm_type.value; lang = AbstractEngine.toUTF8(i.lang); + me = i.me; flags = i.flags; } } From d0e2df55db66c3a814c942fa1279a0a86d976cfc Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 27 Jul 2018 18:59:35 +0200 Subject: [PATCH 2/7] Update android test to build again --- android/build.gradle | 2 +- androidTests/app/build.gradle | 8 ++++---- .../app/src/main/java/com/pep/k9/MainActivity.java | 2 +- .../app/src/main/java/com/pep/k9/PEpUnitaryStuff.java | 2 +- .../app/src/main/java/com/pep/k9/UnitActivity.java | 2 +- androidTests/build.gradle | 4 +++- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 7378a48..6e57786 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -31,7 +31,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 21 - buildToolsVersion '26.0.2' + buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 18 diff --git a/androidTests/app/build.gradle b/androidTests/app/build.gradle index 132085a..abfb76a 100644 --- a/androidTests/app/build.gradle +++ b/androidTests/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion '25.0.2' + compileSdkVersion 25 + buildToolsVersion '26.0.2' defaultConfig { - applicationId "pep.android.k9.materials" + applicationId "security.pEp" minSdkVersion 19 - targetSdkVersion 23 + targetSdkVersion 25 versionCode 1 versionName "1.0" } diff --git a/androidTests/app/src/main/java/com/pep/k9/MainActivity.java b/androidTests/app/src/main/java/com/pep/k9/MainActivity.java index a7ed7f8..435a4f7 100644 --- a/androidTests/app/src/main/java/com/pep/k9/MainActivity.java +++ b/androidTests/app/src/main/java/com/pep/k9/MainActivity.java @@ -1429,7 +1429,7 @@ public class MainActivity extends AppCompatActivity { private Engine.decrypt_message_Return decryptMessageOnEngine(Engine engine, Message encriptedMessage) throws pEpException { long lastTime = System.currentTimeMillis(); logStart("engine.decrypt_message", String.valueOf(lastTime)); - Engine.decrypt_message_Return decrypt_message_return = engine.decrypt_message(encriptedMessage); + Engine.decrypt_message_Return decrypt_message_return = engine.decrypt_message(encriptedMessage, 0); logEnd("engine.decrypt_message", String.valueOf(System.currentTimeMillis() - lastTime)); return decrypt_message_return; } diff --git a/androidTests/app/src/main/java/com/pep/k9/PEpUnitaryStuff.java b/androidTests/app/src/main/java/com/pep/k9/PEpUnitaryStuff.java index 3f024b6..3d8931f 100644 --- a/androidTests/app/src/main/java/com/pep/k9/PEpUnitaryStuff.java +++ b/androidTests/app/src/main/java/com/pep/k9/PEpUnitaryStuff.java @@ -37,7 +37,7 @@ public class PEpUnitaryStuff { msg.setCc(cc); Message encriptedMessage = engine.encrypt_message(msg, null, Message.EncFormat.PEP); - Engine.decrypt_message_Return decrypt_message_return = engine.decrypt_message(encriptedMessage); + Engine.decrypt_message_Return decrypt_message_return = engine.decrypt_message(encriptedMessage, 0); if (!decrypt_message_return.dst.getLongmsg().equals(message)) { throw new RuntimeException("FAILED"); diff --git a/androidTests/app/src/main/java/com/pep/k9/UnitActivity.java b/androidTests/app/src/main/java/com/pep/k9/UnitActivity.java index aae91cc..f8803c8 100644 --- a/androidTests/app/src/main/java/com/pep/k9/UnitActivity.java +++ b/androidTests/app/src/main/java/com/pep/k9/UnitActivity.java @@ -177,7 +177,7 @@ public class UnitActivity extends AppCompatActivity { private Engine.decrypt_message_Return decryptMessageOnEngine(Engine engine, Message encriptedMessage) throws pEpException { long lastTime = System.currentTimeMillis(); - Engine.decrypt_message_Return decrypt_message_return = engine.decrypt_message(encriptedMessage); + Engine.decrypt_message_Return decrypt_message_return = engine.decrypt_message(encriptedMessage, 0); long time = System.currentTimeMillis() - lastTime; Log.d("time", " " + time); return decrypt_message_return; diff --git a/androidTests/build.gradle b/androidTests/build.gradle index 2540ef4..8250249 100644 --- a/androidTests/build.gradle +++ b/androidTests/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.1.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -15,5 +16,6 @@ buildscript { allprojects { repositories { jcenter() + google() } } From d5607ba7744af41712a81fc0b34296141109598f Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Tue, 18 Sep 2018 17:39:15 +0200 Subject: [PATCH 3/7] Start to use NDK standalone toolchain (ndk17) and switch to clang --- android/build.gradle | 2 +- android/external/Makefile | 85 ++++++++++++++----- .../generate-standalone-ndk-toolchain.sh | 21 +++++ android/external/libgcrypt-disable-docs.patch | 18 ++-- android/jni/Android.mk | 3 +- android/jni/Application.mk | 5 +- 6 files changed, 100 insertions(+), 34 deletions(-) create mode 100755 android/external/generate-standalone-ndk-toolchain.sh diff --git a/android/build.gradle b/android/build.gradle index 6e57786..7379cc7 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -15,7 +15,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.1.4' //classpath 'com.android.tools.build:gradle:2.2.0' } } diff --git a/android/external/Makefile b/android/external/Makefile index a6f21ff..05a61b0 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -9,7 +9,7 @@ # TODO: get params from the outside for multiarch build NDK_ABI ?= arm -NDK_TOOLCHAIN_VERSION ?= 4.9 +NDK_TOOLCHAIN_VERSION ?= clang APP_ABI ?= armeabi-v7a APP_PLATFORM ?= android-18 PEP_PACKAGE_NAME ?= com.pep.k9 @@ -44,8 +44,9 @@ else NDK_PROCESSOR=x86 endif -NDK_SYSROOT=$(ANDROID_NDK_HOME)/platforms/$(APP_PLATFORM)/arch-$(NDK_ABI) +NDK_SYSROOT=$(ANDROID_NDK_HOME)/sysroot NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]') + ifeq ($(NDK_ABI),x86) HOST = i686-linux-android NDK_TOOLCHAIN = $(NDK_ABI)-$(NDK_TOOLCHAIN_VERSION) @@ -53,27 +54,28 @@ else HOST = $(NDK_ABI)-linux-androideabi NDK_TOOLCHAIN = $(HOST)-$(NDK_TOOLCHAIN_VERSION) endif -NDK_TOOLCHAIN_BASE=$(ANDROID_NDK_HOME)/toolchains/$(NDK_TOOLCHAIN)/prebuilt/$(NDK_UNAME)-$(NDK_PROCESSOR) - # include Android's build flags TARGET_ARCH_ABI = $(APP_ABI) -include $(ANDROID_NDK_HOME)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk +#include $(ANDROID_NDK)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk #include $(ANDROID_NDK_HOME)/toolchains/$(NDK_TOOLCHAIN)/setup.mk +ANDROID_NDK_HOME=$(EXTERNAL_ROOT)/ndk-18-arm +LD := $(ANDROID_NDK_HOME)/bin/$(HOST)-ld +AR := $(ANDROID_NDK_HOME)/bin/$(HOST)-ar +AS :cd= $(ANDROID_NDK_HOME)/bin/$(HOST)-clang +CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang +CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang++ +RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib -CC := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-gcc --sysroot=$(NDK_SYSROOT) -LD := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-ld -AR := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-ar -RANLIB := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-ranlib -CFLAGS = -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -LDFLAGS = -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie +CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -D_FILE_OFFSET_BITS=64 -DLARGEFILE_SOURCE=1 +LDFLAGS += -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie # change 'release' to 'debug' for unoptimized debug builds ifeq ($(APP_ABI),armeabi-v7a) - CFLAGS += $(TARGET_arm_release_CFLAGS) + CFLAGS += $(TARGET_arm_debug_CFLAGS) endif ifeq ($(APP_ABI),armeabi) - CFLAGS += $(TARGET_thumb_release_CFLAGS) + CFLAGS += $(TARGET_thumb_debug_CFLAGS) endif #------------------------------------------------------------------------------# @@ -187,6 +189,7 @@ libassuan/Makefile: libassuan/configure CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ --enable-maintainer-mode \ + --disable-largefile \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) @@ -205,7 +208,7 @@ libassuan-install: $(LOCAL)/lib/libassuan.so #------------------------------------------------------------------------------# # libksba -EXTERNAL_GIT_REPOS += libksba|git://git.gnupg.org/libksba.git?libksba-1.3.3 +EXTERNAL_GIT_REPOS += libksba|git://git.gnupg.org/libksba.git?libksba-1.3.4 libksba/configure: libksba.src.stamp libksba/configure.ac cd libksba && ./autogen.sh @@ -231,6 +234,35 @@ libksba-build: libksba/src/.libs/libksba.so libksba-install: $(LOCAL)/lib/libksba.so + +#------------------------------------------------------------------------------# +# npth + +EXTERNAL_GIT_REPOS += npth|git://git.gnupg.org/npth.git?npth-1.2 + +npth/configure: npth.src.stamp npth/configure.ac + cd npth && ./autogen.sh + +npth/Makefile: $(LOCAL)/lib/libgpg-error.so npth/configure + cd npth && \ + CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + ./configure $(CONFIGURE_ARGS) \ + --enable-maintainer-mode \ + --host=$(HOST) \ + --with-gpg-error-prefix=$(LOCAL) \ + --prefix=$(LOCAL) + +npth/src/.libs/libnpth.so: npth/Makefile + $(MAKE) -C npth + +$(LOCAL)/lib/libnpth.so: npth/src/.libs/libnpth.so + $(MAKE) -C npth prefix=$(LOCAL) install + ls -l $(LOCAL)/lib/libnpth.so + +npth-build: npth/src/.libs/libnpth.so + +npth-install: $(LOCAL)/lib/libnpth.so + #------------------------------------------------------------------------------# # curl @@ -350,7 +382,7 @@ gnupg/Makefile: gnupg/configure --disable-gpgsm \ --prefix=$(prefix) -gnupg/g10/gpg2: $(LOCAL)/lib/libgpg-error.so $(LOCAL)/lib/libgcrypt.so $(LOCAL)/lib/libksba.so $(LOCAL)/lib/libassuan.so $(LOCAL)/lib/libcurl.so $(LOCAL)/lib/libiconv.so gnupg/Makefile +gnupg/g10/gpg2: $(LOCAL)/lib/libgpg-error.so $(LOCAL)/lib/libgcrypt.so $(LOCAL)/lib/libksba.so $(LOCAL)/lib/libnpth.so $(LOCAL)/lib/libassuan.so $(LOCAL)/lib/libcurl.so $(LOCAL)/lib/libiconv.so gnupg/Makefile $(MAKE) -C gnupg $(LOCAL)/bin/gpg2: gnupg/g10/gpg2 gnupg/configure @@ -369,8 +401,14 @@ gnupg-install: $(LOCAL)/bin/gpg2 EXTERNAL_GIT_REPOS += gpgme|git://git.gnupg.org/gpgme.git?gpgme-1.8.0 -gpgme/configure: gpgme.src.stamp gpgme/configure.ac - cd gpgme && ./autogen.sh +gpgme/configure: gpgme.src.stamp gpgme/configure.ac + cd gpgme && ./autogen.sh + +ifneq ("x$(findstring '64',$(HOST))x","xx") + gpgme_32b_force_no_largefile = +else + gpgme_32b_force_no_largefile = --disable-largefile +endif gpgme/Makefile: gpgme/configure -patch -N -p1 --reject-file=- gpgme/m4/libtool.m4 libtool-Add-Android-Linux-support.patch @@ -378,6 +416,7 @@ gpgme/Makefile: gpgme/configure CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ --host=$(HOST) \ + $(gpgme_32b_force_no_largefile) \ --enable-maintainer-mode \ --with-gpg-error-prefix=$(LOCAL) \ --with-libassuan-prefix=$(LOCAL) \ @@ -411,7 +450,7 @@ libetpan/build-android/libetpan-android-1.zip: libiconv-install libetpan.src.sta libetpan-build: libetpan/build-android/libetpan-android-1.zip -libetpan-cleanzip: +libetpan-cleanzip: rm -f libetpan/build-android/libetpan-android-1.zip #------------------------------------------------------------------------------# @@ -438,7 +477,7 @@ EXTERNAL_SRCS_CLEAN += uuid-clean uuid/Makefile: uuid.src.stamp sed -i 's,AC_CHECK_VA_COPY(),,' uuid/uuid.ac - cd uuid && autoconf + cd uuid && autoconf -patch -N -p1 --reject-file=- uuid/libtool.m4 libtool-Add-Android-Linux-support-iconv.patch cp config.sub uuid cp config.guess uuid @@ -490,7 +529,7 @@ assets: clean-assets #------------------------------------------------------------------------------# # Clone update and archive external projects GIT repos -# Local clone is in external/$project.git while +# Local clone is in external/$project.git while # selected commit is archived in external/$project define per_repo_targets @@ -510,7 +549,7 @@ $(1).src.stamp: $(1).git.stamp $(1)-src: $(1).src.stamp -$(1)-clean: +$(1)-clean: rm -rf $(1) rm -f $(1).src.stamp @@ -546,6 +585,9 @@ clean-install: clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip +clean-all: clean + rm -rf *.git + rm -rf *.stamp #------------------------------------------------------------------------------# .PHONY = clean clean-install clean-assets libetpan-cleanzip\ @@ -553,6 +595,7 @@ clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip libgcrypt-build libgcrypt-install \ libassuan-build libassuan-install \ libksba-build libksba-install \ + libnpth-build libnpth-install \ libiconv-build libiconv-install \ uuid-build uuid-install \ gnupg-build gnupg-install\ diff --git a/android/external/generate-standalone-ndk-toolchain.sh b/android/external/generate-standalone-ndk-toolchain.sh new file mode 100755 index 0000000..487ff77 --- /dev/null +++ b/android/external/generate-standalone-ndk-toolchain.sh @@ -0,0 +1,21 @@ +#!/bin/bash +usage="Usage: $(basename "$0") [-h][--force] -- Script to generate android standalone toolchain to build pEp for Android. + +where: + -h Show this help text + --force Force generating the toolchain" + + +if [ "$1" == "-h" ]; then +echo "$usage" + exit 0 +fi + +if [ -z "$ANDROID_NDK" ]; then + echo "Please define \$ANDROID_NDK" + exit 1 +fi + +$ANDROID_NDK/build/tools/make_standalone_toolchain.py $1 --arch arm --api 18 --install-dir=ndk-18-arm +exit 0 + diff --git a/android/external/libgcrypt-disable-docs.patch b/android/external/libgcrypt-disable-docs.patch index 1147263..cfbb479 100644 --- a/android/external/libgcrypt-disable-docs.patch +++ b/android/external/libgcrypt-disable-docs.patch @@ -1,13 +1,13 @@ ---- a/libgcrypt/Makefile.am 2015-09-08 08:29:55.000000000 +0200 -+++ b/libgcrypt/Makefile.am 2016-08-23 17:16:50.712565999 +0200 -@@ -24,8 +24,8 @@ - # (A suitable gitlog-to-changelog script can be found in GnuPG master.) - GITLOG_TO_CHANGELOG=gitlog-to-changelog +--- Makefile.am 2018-09-14 09:13:36.224317923 +0200 ++++ Makefile.am.orig 2018-09-14 08:57:37.545217924 +0200 +@@ -31,8 +31,8 @@ + endif --DIST_SUBDIRS = m4 compat mpi cipher random src doc tests --SUBDIRS = compat mpi cipher random src doc tests -+DIST_SUBDIRS = m4 compat mpi cipher random src -+SUBDIRS = compat mpi cipher random src + +-DIST_SUBDIRS = m4 compat mpi cipher random src +-SUBDIRS = compat mpi cipher random src ++DIST_SUBDIRS = m4 compat mpi cipher random src doc tests ++SUBDIRS = compat mpi cipher random src $(doc) tests EXTRA_DIST = autogen.sh autogen.rc README.GIT LICENSES \ ChangeLog-2011 build-aux/ChangeLog-2011 doc/ChangeLog-2011 \ diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 069a202..bad76b9 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -59,6 +59,7 @@ LOCAL_MODULE := pEpJNI LOCAL_SHARED_LIBRARIES := libgpgme libassuan libcurl libgcrypt libgpg-error LOCAL_STATIC_LIBRARIES := pEpEngine libetpan libiconv libuuid LOCAL_CPP_FEATURES += exceptions +LOCAL_CFLAGS += -DHAVE_PTHREADS LOCAL_SRC_FILES := \ ../../src/org_pEp_jniadapter_AbstractEngine.cc \ ../../src/org_pEp_jniadapter_Engine.cc \ @@ -68,7 +69,7 @@ LOCAL_SRC_FILES := \ ../../src/jniutils.cc LOCAL_C_INCLUDES += $(GPGBUILD)/include -LOCAL_LDLIBS := -llog +LOCAL_LDLIBS += -llog include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) diff --git a/android/jni/Application.mk b/android/jni/Application.mk index f0c0493..2740c89 100644 --- a/android/jni/Application.mk +++ b/android/jni/Application.mk @@ -1,5 +1,6 @@ -APP_STL := stlport_static +APP_STL := c++_static APP_OPTIM := debug APP_PLATFORM=android-18 APP_ABI := armeabi-v7a -NDK_TOOLCHAIN_VERSION = 4.9 +NDK_TOOLCHAIN_VERSION = clang +APP_UNIFIED_HEADERS=true From 921989031dd03dae4fc0b383ebde59ccbfc272d9 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 15 Oct 2018 11:54:04 +0200 Subject: [PATCH 4/7] Update to latest use NDK and GPG tools --- android/external/Makefile | 83 +++++++++++-------- android/jni/Android.mk | 7 +- android/jni/Application.mk | 2 +- .../jni/org_pEp_jniadapter_AndroidHelper.cc | 2 +- .../src/org/pEp/jniadapter/AndroidHelper.java | 4 +- 5 files changed, 57 insertions(+), 41 deletions(-) diff --git a/android/external/Makefile b/android/external/Makefile index 05a61b0..4f80df6 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -66,8 +66,8 @@ CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang++ RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib - -CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -D_FILE_OFFSET_BITS=64 -DLARGEFILE_SOURCE=1 +#-D_FILE_OFFSET_BITS=64 -DLARGEFILE_SOURCE=1 +CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -g -O0 LDFLAGS += -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie # change 'release' to 'debug' for unoptimized debug builds @@ -105,7 +105,7 @@ showsetup: #------------------------------------------------------------------------------# # libgpg-error -EXTERNAL_GIT_REPOS += libgpg-error|git://git.gnupg.org/libgpg-error.git?libgpg-error-1.20 +EXTERNAL_GIT_REPOS += libgpg-error|git://git.gnupg.org/libgpg-error.git?libgpg-error-1.32 libgpg-error/configure: libgpg-error.src.stamp libgpg-error/configure.ac cd libgpg-error && ./autogen.sh @@ -124,15 +124,15 @@ libgpg-error/Makefile: libgpg-error/configure --prefix=$(LOCAL) ls -l libgpg-error/libtool # brute force and ignorance to make libtool comply with android style - sed -i 's,^fast_install=.*,fast_install=needless,' libgpg-error/libtool - sed -i 's,^version_type=.*,version_type=none,' libgpg-error/libtool - sed -i 's,^shlibpath_overrides_runpath=.*,shlibpath_overrides_runpath=yes,' libgpg-error/libtool - sed -i 's,^library_names_spec=.*,library_names_spec="\\$$libname\\$$release\\$$shared_ext",' libgpg-error/libtool - sed -i 's,^soname_spec=.*,soname_spec="\\$$libname\\$$release\\$$shared_ext",' libgpg-error/libtool - sed -i 's,^finish_cmds=.*,finish_cmds="",' libgpg-error/libtool - sed -i 's,^sys_lib_dlsearch_path_spec=.*,sys_lib_dlsearch_path_spec="/lib /usr/lib",' libgpg-error/libtool - -libgpg-error/src/.libs/libgpg-error.so: libgpg-error/Makefile + #sed -i 's,^fast_install=.*,fast_install=needless,' libgpg-error/libtool + #sed -i 's,^version_type=.*,version_type=none,' libgpg-error/libtool + #sed -i 's,^shlibpath_overrides_runpath=.*,shlibpath_overrides_runpath=yes,' libgpg-error/libtool + #sed -i 's,^library_names_spec=.*,library_names_spec="\\$$libname\\$$release\\$$shared_ext",' libgpg-error/libtool + #sed -i 's,^soname_spec=.*,soname_spec="\\$$libname\\$$release\\$$shared_ext",' libgpg-error/libtool + #sed -i 's,^finish_cmds=.*,finish_cmds="",' libgpg-error/libtool + #sed -i 's,^sys_lib_dlsearch_path_spec=.*,sys_lib_dlsearch_path_spec="/lib /usr/lib",' libgpg-error/libtool + +libgpg-error/src/.libs/libgpg-error.so: libgpg-error/Makefile $(MAKE) -C libgpg-error libgpg-error-build: libgpg-error/src/.libs/libgpg-error.so @@ -146,23 +146,27 @@ libgpg-error-install: $(LOCAL)/lib/libgpg-error.so #------------------------------------------------------------------------------# # libgcrypt -EXTERNAL_GIT_REPOS += libgcrypt|git://git.gnupg.org/libgcrypt.git?libgcrypt-1.6.4 +EXTERNAL_GIT_REPOS += libgcrypt|git://git.gnupg.org/libgcrypt.git?libgcrypt-1.8.3 -libgcrypt/configure: libgcrypt.src.stamp libgcrypt/configure.ac +libgcrypt/configure: libgcrypt.src.stamp libgcrypt/configure.ac cd libgcrypt && ./autogen.sh -libgcrypt/Makefile: libgcrypt/configure +libgcrypt/Makefile: libgcrypt/configure -patch -N -p1 --reject-file=- libgcrypt/Makefile.am libgcrypt-disable-docs.patch + -sed -i 's/$$(doc) tests//' libgcrypt/Makefile.am + cd libgcrypt && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ - --enable-maintainer-mode \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) -patch -N -p1 --reject-file=- libgcrypt/tests/random.c libgcrypt-disable-hanging-random-test.patch # force use of /dev/urandom -sed -i 's/NAME_OF_DEV_RANDOM/NAME_OF_DEV_URANDOM/' libgcrypt/random/rndlinux.c + -sed -i 's/doc tests//' libgcrypt/Makefile + -sed -i 's/$$(doc) tests//' libgcrypt/Makefile + libgcrypt/src/.libs/libgcrypt.so: $(LOCAL)/lib/libgpg-error.so libgcrypt/Makefile $(MAKE) -C libgcrypt @@ -178,21 +182,22 @@ libgcrypt-install: $(LOCAL)/lib/libgcrypt.so #------------------------------------------------------------------------------# # libassuan -EXTERNAL_GIT_REPOS += libassuan|git://git.gnupg.org/libassuan.git?libassuan-2.3.0 +EXTERNAL_GIT_REPOS += libassuan|git://git.gnupg.org/libassuan.git?libassuan-2.5.1 -libassuan/configure: libassuan.src.stamp libassuan/configure.ac +libassuan/configure: libassuan.src.stamp libassuan/configure.ac cd libassuan && ./autogen.sh && autoreconf --install --force --verbose libassuan/Makefile: libassuan/configure -patch -N -p1 --reject-file=- libassuan/m4/libtool.m4 libtool-Add-Android-Linux-support.patch + -sed -i 's/$$(doc) tests//' libassuan/Makefile.am cd libassuan && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ - --enable-maintainer-mode \ - --disable-largefile \ + -F-disable-largefile \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) + -sed -i 's/$$(doc) tests//' libassuan/Makefile libassuan/src/.libs/libassuan.so: $(LOCAL)/lib/libgpg-error.so libassuan/Makefile $(MAKE) -C libassuan @@ -208,20 +213,23 @@ libassuan-install: $(LOCAL)/lib/libassuan.so #------------------------------------------------------------------------------# # libksba -EXTERNAL_GIT_REPOS += libksba|git://git.gnupg.org/libksba.git?libksba-1.3.4 +EXTERNAL_GIT_REPOS += libksba|git://git.gnupg.org/libksba.git?libksba-1.3.5 -libksba/configure: libksba.src.stamp libksba/configure.ac +libksba/configure: libksba.src.stamp libksba/configure.ac cd libksba && ./autogen.sh libksba/Makefile: $(LOCAL)/lib/libgpg-error.so libksba/configure -patch -N -p1 --reject-file=- libksba/m4/libtool.m4 libtool-Add-Android-Linux-support.patch + -sed -i 's/$${tests} doc//' libksba/Makefile.am + cd libksba && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ - --enable-maintainer-mode \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) + -sed -i 's/$${tests} doc//' libksba/Makefile + libksba/src/.libs/libksba.so: libksba/Makefile $(MAKE) -C libksba @@ -238,7 +246,7 @@ libksba-install: $(LOCAL)/lib/libksba.so #------------------------------------------------------------------------------# # npth -EXTERNAL_GIT_REPOS += npth|git://git.gnupg.org/npth.git?npth-1.2 +EXTERNAL_GIT_REPOS += npth|git://git.gnupg.org/npth.git?npth-1.6 npth/configure: npth.src.stamp npth/configure.ac cd npth && ./autogen.sh @@ -247,11 +255,11 @@ npth/Makefile: $(LOCAL)/lib/libgpg-error.so npth/configure cd npth && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure $(CONFIGURE_ARGS) \ - --enable-maintainer-mode \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) + npth/src/.libs/libnpth.so: npth/Makefile $(MAKE) -C npth @@ -268,7 +276,7 @@ npth-install: $(LOCAL)/lib/libnpth.so EXTERNAL_GIT_REPOS += curl|https://github.com/bagder/curl?curl-7_45_0 -curl/configure: curl.src.stamp curl/configure.ac +curl/configure: curl.src.stamp curl/configure.ac cd curl && ./buildconf curl/Makefile: curl/configure @@ -338,7 +346,6 @@ libiconv/Makefile: libiconv.src.stamp CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ --enable-static \ - --enable-maintainer-mode \ --host=$(HOST) \ --with-gnu-ld \ --prefix=$(LOCAL) @@ -357,9 +364,9 @@ libiconv-install: $(LOCAL)/lib/libiconv.so #------------------------------------------------------------------------------# # gnupg -EXTERNAL_GIT_REPOS += gnupg|git://git.gnupg.org/gnupg.git?gnupg-2.0.30 +EXTERNAL_GIT_REPOS += gnupg|git://git.gnupg.org/gnupg.git?gnupg-2.2.10 -gnupg/configure: gnupg.src.stamp gnupg/configure.ac +gnupg/configure: gnupg.src.stamp gnupg/configure.ac cd gnupg && ./autogen.sh gnupg/Makefile: gnupg/configure @@ -382,16 +389,16 @@ gnupg/Makefile: gnupg/configure --disable-gpgsm \ --prefix=$(prefix) -gnupg/g10/gpg2: $(LOCAL)/lib/libgpg-error.so $(LOCAL)/lib/libgcrypt.so $(LOCAL)/lib/libksba.so $(LOCAL)/lib/libnpth.so $(LOCAL)/lib/libassuan.so $(LOCAL)/lib/libcurl.so $(LOCAL)/lib/libiconv.so gnupg/Makefile +gnupg/g10/gpg: $(LOCAL)/lib/libgpg-error.so $(LOCAL)/lib/libgcrypt.so $(LOCAL)/lib/libksba.so $(LOCAL)/lib/libnpth.so $(LOCAL)/lib/libassuan.so $(LOCAL)/lib/libnpth.so $(LOCAL)/lib/libcurl.so $(LOCAL)/lib/libiconv.so gnupg/Makefile $(MAKE) -C gnupg -$(LOCAL)/bin/gpg2: gnupg/g10/gpg2 gnupg/configure +$(LOCAL)/bin/gpg: gnupg/g10/gpg gnupg/configure $(MAKE) -C gnupg prefix=$(LOCAL) install - ls -l $(LOCAL)/bin/gpg2 + ls -l $(LOCAL)/bin/gpg -gnupg-build: gnupg/g10/gpg2 +gnupg-build: gnupg/g10/gpg -gnupg-install: $(LOCAL)/bin/gpg2 +gnupg-install: $(LOCAL)/bin/gpg install -d $(LOCAL)/etc/gnupg install -d $(LOCAL)/var/run/gnupg install -d $(LOCAL)/var/cache/gnupg @@ -399,7 +406,7 @@ gnupg-install: $(LOCAL)/bin/gpg2 #------------------------------------------------------------------------------# # gpgme -EXTERNAL_GIT_REPOS += gpgme|git://git.gnupg.org/gpgme.git?gpgme-1.8.0 +EXTERNAL_GIT_REPOS += gpgme|git://git.gnupg.org/gpgme.git?gpgme-1.12.0 gpgme/configure: gpgme.src.stamp gpgme/configure.ac cd gpgme && ./autogen.sh @@ -412,6 +419,8 @@ endif gpgme/Makefile: gpgme/configure -patch -N -p1 --reject-file=- gpgme/m4/libtool.m4 libtool-Add-Android-Linux-support.patch + -sed -i 's/$${tests} doc//' gpgme/Makefile.am + cd gpgme && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ @@ -420,6 +429,7 @@ gpgme/Makefile: gpgme/configure --enable-maintainer-mode \ --with-gpg-error-prefix=$(LOCAL) \ --with-libassuan-prefix=$(LOCAL) \ + --with-npth-prefix=$(LOCAL) \ --enable-fixed-path=$(prefix)/bin \ --disable-glibtest \ --disable-gpg-test \ @@ -428,6 +438,7 @@ gpgme/Makefile: gpgme/configure --disable-g13-test \ --prefix=$(prefix) \ --enable-languages=cl + -sed -i 's/$${tests} doc//' gpgme/Makefile gpgme/src/.libs/libgpgme.so: gpgme/Makefile @@ -438,7 +449,7 @@ $(LOCAL)/lib/libgpgme.so: gpgme/src/.libs/libgpgme.so gpgme-build: gpgme/src/.libs/libgpgme.so -gpgme-install: $(LOCAL)/bin/gpg2 $(LOCAL)/lib/libgpgme.so +gpgme-install: $(LOCAL)/bin/gpg $(LOCAL)/lib/libgpgme.so #------------------------------------------------------------------------------# # libetpan diff --git a/android/jni/Android.mk b/android/jni/Android.mk index bad76b9..7951e5e 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -7,6 +7,11 @@ LOCAL_MODULE := libassuan LOCAL_SRC_FILES := $(GPGBUILD)/lib/libassuan.so include $(PREBUILT_SHARED_LIBRARY) +include $(CLEAR_VARS) +LOCAL_MODULE := libnpth +LOCAL_SRC_FILES := $(GPGBUILD)/lib/libnpth.so +include $(PREBUILT_SHARED_LIBRARY) + include $(CLEAR_VARS) LOCAL_MODULE := libcurl LOCAL_SRC_FILES := $(GPGBUILD)/lib/libcurl.so @@ -56,7 +61,7 @@ $(shell sh $(ENGINE_PATH)/build-android/takeOutHeaderFiles.sh $(ENGINE_PATH)) include $(CLEAR_VARS) LOCAL_MODULE := pEpJNI -LOCAL_SHARED_LIBRARIES := libgpgme libassuan libcurl libgcrypt libgpg-error +LOCAL_SHARED_LIBRARIES := libgpgme libassuan libcurl libgcrypt libgpg-error libnpth LOCAL_STATIC_LIBRARIES := pEpEngine libetpan libiconv libuuid LOCAL_CPP_FEATURES += exceptions LOCAL_CFLAGS += -DHAVE_PTHREADS diff --git a/android/jni/Application.mk b/android/jni/Application.mk index 2740c89..0e7d1e7 100644 --- a/android/jni/Application.mk +++ b/android/jni/Application.mk @@ -1,4 +1,4 @@ -APP_STL := c++_static +APP_STL := c++_shared APP_OPTIM := debug APP_PLATFORM=android-18 APP_ABI := armeabi-v7a diff --git a/android/jni/org_pEp_jniadapter_AndroidHelper.cc b/android/jni/org_pEp_jniadapter_AndroidHelper.cc index 28e37c6..4c3b6d9 100644 --- a/android/jni/org_pEp_jniadapter_AndroidHelper.cc +++ b/android/jni/org_pEp_jniadapter_AndroidHelper.cc @@ -25,7 +25,7 @@ JNIEXPORT jint JNICALL Java_org_pEp_jniadapter_AndroidHelper_nativeSetup gpgme_set_global_flag("debug", cdebugflag); env->ReleaseStringUTFChars(debugflag, cdebugflag); gpgme_set_global_flag ("disable-gpgconf", ""); - gpgme_set_global_flag ("gpg-name", "gpg2"); + gpgme_set_global_flag ("gpg-name", "gpg"); return 0; } diff --git a/android/src/org/pEp/jniadapter/AndroidHelper.java b/android/src/org/pEp/jniadapter/AndroidHelper.java index ec8b8a0..ebbf7a3 100644 --- a/android/src/org/pEp/jniadapter/AndroidHelper.java +++ b/android/src/org/pEp/jniadapter/AndroidHelper.java @@ -27,9 +27,9 @@ public class AndroidHelper { public static File binDir; public static File libDir; private static File tmpDir; - + // TODO : Increment when needed. - public static int ENGINE_VERSION_CODE = 2779; + public static int ENGINE_VERSION_CODE = 3052; private static File shareDir; From fae06b6aea164ee20856d27a17008853b027aada Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Wed, 17 Oct 2018 09:35:24 +0200 Subject: [PATCH 5/7] Check myself() result. --- src/basic_api.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/basic_api.cc b/src/basic_api.cc index 6be089b..b79a007 100644 --- a/src/basic_api.cc +++ b/src/basic_api.cc @@ -59,8 +59,13 @@ JNIEXPORT jobject JNICALL Java_org_pEp_jniadapter_Engine_myself( PEP_SESSION session = (PEP_SESSION) callLongMethod(env, obj, "getHandle"); pEp_identity *_ident = to_identity(env, ident); - ::myself(session, _ident); + PEP_STATUS status = ::myself(session, _ident); + if (status != PEP_STATUS_OK) { + LOGD("Failed Myself: 0x%04x\\n", status); + throw_pEp_Exception(env, status); + return NULL; + } return from_identity(env, _ident); } @@ -89,7 +94,13 @@ JNIEXPORT jobject JNICALL Java_org_pEp_jniadapter_Engine_setOwnKey( pEp_identity *_ident = to_identity(env, ident); char *_fpr = to_string(env, fpr); - ::set_own_key(session, _ident, _fpr); + PEP_STATUS status = ::set_own_key(session, _ident, _fpr); + + if (status != PEP_STATUS_OK) { + LOGD("Failed setOwnKey: 0x%04x\\n", status); + throw_pEp_Exception(env, status); + return NULL; + } return from_identity(env, _ident); } From 2f414e208d36dc5fa438f51c5eeff17c6fe5875d Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Wed, 17 Oct 2018 11:05:57 +0200 Subject: [PATCH 6/7] fix typo and Makefile --- android/external/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/external/Makefile b/android/external/Makefile index 4f80df6..e682acf 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -193,7 +193,7 @@ libassuan/Makefile: libassuan/configure cd libassuan && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ - -F-disable-largefile \ + --disable-largefile \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) From b1af275145f0b4258ebd53cd60ffa42474c56165 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 22 Oct 2018 14:59:21 +0200 Subject: [PATCH 7/7] Backout to return to gnupg 2.0.30: b483b6363c38 --- android/external/Makefile | 81 ++++++++----------- android/jni/Android.mk | 7 +- android/jni/Application.mk | 2 +- .../jni/org_pEp_jniadapter_AndroidHelper.cc | 2 +- .../src/org/pEp/jniadapter/AndroidHelper.java | 4 +- 5 files changed, 40 insertions(+), 56 deletions(-) diff --git a/android/external/Makefile b/android/external/Makefile index e682acf..05a61b0 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -66,8 +66,8 @@ CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang++ RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib -#-D_FILE_OFFSET_BITS=64 -DLARGEFILE_SOURCE=1 -CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -g -O0 + +CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -D_FILE_OFFSET_BITS=64 -DLARGEFILE_SOURCE=1 LDFLAGS += -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie # change 'release' to 'debug' for unoptimized debug builds @@ -105,7 +105,7 @@ showsetup: #------------------------------------------------------------------------------# # libgpg-error -EXTERNAL_GIT_REPOS += libgpg-error|git://git.gnupg.org/libgpg-error.git?libgpg-error-1.32 +EXTERNAL_GIT_REPOS += libgpg-error|git://git.gnupg.org/libgpg-error.git?libgpg-error-1.20 libgpg-error/configure: libgpg-error.src.stamp libgpg-error/configure.ac cd libgpg-error && ./autogen.sh @@ -124,15 +124,15 @@ libgpg-error/Makefile: libgpg-error/configure --prefix=$(LOCAL) ls -l libgpg-error/libtool # brute force and ignorance to make libtool comply with android style - #sed -i 's,^fast_install=.*,fast_install=needless,' libgpg-error/libtool - #sed -i 's,^version_type=.*,version_type=none,' libgpg-error/libtool - #sed -i 's,^shlibpath_overrides_runpath=.*,shlibpath_overrides_runpath=yes,' libgpg-error/libtool - #sed -i 's,^library_names_spec=.*,library_names_spec="\\$$libname\\$$release\\$$shared_ext",' libgpg-error/libtool - #sed -i 's,^soname_spec=.*,soname_spec="\\$$libname\\$$release\\$$shared_ext",' libgpg-error/libtool - #sed -i 's,^finish_cmds=.*,finish_cmds="",' libgpg-error/libtool - #sed -i 's,^sys_lib_dlsearch_path_spec=.*,sys_lib_dlsearch_path_spec="/lib /usr/lib",' libgpg-error/libtool - -libgpg-error/src/.libs/libgpg-error.so: libgpg-error/Makefile + sed -i 's,^fast_install=.*,fast_install=needless,' libgpg-error/libtool + sed -i 's,^version_type=.*,version_type=none,' libgpg-error/libtool + sed -i 's,^shlibpath_overrides_runpath=.*,shlibpath_overrides_runpath=yes,' libgpg-error/libtool + sed -i 's,^library_names_spec=.*,library_names_spec="\\$$libname\\$$release\\$$shared_ext",' libgpg-error/libtool + sed -i 's,^soname_spec=.*,soname_spec="\\$$libname\\$$release\\$$shared_ext",' libgpg-error/libtool + sed -i 's,^finish_cmds=.*,finish_cmds="",' libgpg-error/libtool + sed -i 's,^sys_lib_dlsearch_path_spec=.*,sys_lib_dlsearch_path_spec="/lib /usr/lib",' libgpg-error/libtool + +libgpg-error/src/.libs/libgpg-error.so: libgpg-error/Makefile $(MAKE) -C libgpg-error libgpg-error-build: libgpg-error/src/.libs/libgpg-error.so @@ -146,27 +146,23 @@ libgpg-error-install: $(LOCAL)/lib/libgpg-error.so #------------------------------------------------------------------------------# # libgcrypt -EXTERNAL_GIT_REPOS += libgcrypt|git://git.gnupg.org/libgcrypt.git?libgcrypt-1.8.3 +EXTERNAL_GIT_REPOS += libgcrypt|git://git.gnupg.org/libgcrypt.git?libgcrypt-1.6.4 -libgcrypt/configure: libgcrypt.src.stamp libgcrypt/configure.ac +libgcrypt/configure: libgcrypt.src.stamp libgcrypt/configure.ac cd libgcrypt && ./autogen.sh -libgcrypt/Makefile: libgcrypt/configure +libgcrypt/Makefile: libgcrypt/configure -patch -N -p1 --reject-file=- libgcrypt/Makefile.am libgcrypt-disable-docs.patch - -sed -i 's/$$(doc) tests//' libgcrypt/Makefile.am - cd libgcrypt && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ + --enable-maintainer-mode \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) -patch -N -p1 --reject-file=- libgcrypt/tests/random.c libgcrypt-disable-hanging-random-test.patch # force use of /dev/urandom -sed -i 's/NAME_OF_DEV_RANDOM/NAME_OF_DEV_URANDOM/' libgcrypt/random/rndlinux.c - -sed -i 's/doc tests//' libgcrypt/Makefile - -sed -i 's/$$(doc) tests//' libgcrypt/Makefile - libgcrypt/src/.libs/libgcrypt.so: $(LOCAL)/lib/libgpg-error.so libgcrypt/Makefile $(MAKE) -C libgcrypt @@ -182,22 +178,21 @@ libgcrypt-install: $(LOCAL)/lib/libgcrypt.so #------------------------------------------------------------------------------# # libassuan -EXTERNAL_GIT_REPOS += libassuan|git://git.gnupg.org/libassuan.git?libassuan-2.5.1 +EXTERNAL_GIT_REPOS += libassuan|git://git.gnupg.org/libassuan.git?libassuan-2.3.0 -libassuan/configure: libassuan.src.stamp libassuan/configure.ac +libassuan/configure: libassuan.src.stamp libassuan/configure.ac cd libassuan && ./autogen.sh && autoreconf --install --force --verbose libassuan/Makefile: libassuan/configure -patch -N -p1 --reject-file=- libassuan/m4/libtool.m4 libtool-Add-Android-Linux-support.patch - -sed -i 's/$$(doc) tests//' libassuan/Makefile.am cd libassuan && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ + --enable-maintainer-mode \ --disable-largefile \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) - -sed -i 's/$$(doc) tests//' libassuan/Makefile libassuan/src/.libs/libassuan.so: $(LOCAL)/lib/libgpg-error.so libassuan/Makefile $(MAKE) -C libassuan @@ -213,23 +208,20 @@ libassuan-install: $(LOCAL)/lib/libassuan.so #------------------------------------------------------------------------------# # libksba -EXTERNAL_GIT_REPOS += libksba|git://git.gnupg.org/libksba.git?libksba-1.3.5 +EXTERNAL_GIT_REPOS += libksba|git://git.gnupg.org/libksba.git?libksba-1.3.4 -libksba/configure: libksba.src.stamp libksba/configure.ac +libksba/configure: libksba.src.stamp libksba/configure.ac cd libksba && ./autogen.sh libksba/Makefile: $(LOCAL)/lib/libgpg-error.so libksba/configure -patch -N -p1 --reject-file=- libksba/m4/libtool.m4 libtool-Add-Android-Linux-support.patch - -sed -i 's/$${tests} doc//' libksba/Makefile.am - cd libksba && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ + --enable-maintainer-mode \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) - -sed -i 's/$${tests} doc//' libksba/Makefile - libksba/src/.libs/libksba.so: libksba/Makefile $(MAKE) -C libksba @@ -246,7 +238,7 @@ libksba-install: $(LOCAL)/lib/libksba.so #------------------------------------------------------------------------------# # npth -EXTERNAL_GIT_REPOS += npth|git://git.gnupg.org/npth.git?npth-1.6 +EXTERNAL_GIT_REPOS += npth|git://git.gnupg.org/npth.git?npth-1.2 npth/configure: npth.src.stamp npth/configure.ac cd npth && ./autogen.sh @@ -255,11 +247,11 @@ npth/Makefile: $(LOCAL)/lib/libgpg-error.so npth/configure cd npth && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure $(CONFIGURE_ARGS) \ + --enable-maintainer-mode \ --host=$(HOST) \ --with-gpg-error-prefix=$(LOCAL) \ --prefix=$(LOCAL) - npth/src/.libs/libnpth.so: npth/Makefile $(MAKE) -C npth @@ -276,7 +268,7 @@ npth-install: $(LOCAL)/lib/libnpth.so EXTERNAL_GIT_REPOS += curl|https://github.com/bagder/curl?curl-7_45_0 -curl/configure: curl.src.stamp curl/configure.ac +curl/configure: curl.src.stamp curl/configure.ac cd curl && ./buildconf curl/Makefile: curl/configure @@ -346,6 +338,7 @@ libiconv/Makefile: libiconv.src.stamp CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ --enable-static \ + --enable-maintainer-mode \ --host=$(HOST) \ --with-gnu-ld \ --prefix=$(LOCAL) @@ -364,9 +357,9 @@ libiconv-install: $(LOCAL)/lib/libiconv.so #------------------------------------------------------------------------------# # gnupg -EXTERNAL_GIT_REPOS += gnupg|git://git.gnupg.org/gnupg.git?gnupg-2.2.10 +EXTERNAL_GIT_REPOS += gnupg|git://git.gnupg.org/gnupg.git?gnupg-2.0.30 -gnupg/configure: gnupg.src.stamp gnupg/configure.ac +gnupg/configure: gnupg.src.stamp gnupg/configure.ac cd gnupg && ./autogen.sh gnupg/Makefile: gnupg/configure @@ -389,16 +382,16 @@ gnupg/Makefile: gnupg/configure --disable-gpgsm \ --prefix=$(prefix) -gnupg/g10/gpg: $(LOCAL)/lib/libgpg-error.so $(LOCAL)/lib/libgcrypt.so $(LOCAL)/lib/libksba.so $(LOCAL)/lib/libnpth.so $(LOCAL)/lib/libassuan.so $(LOCAL)/lib/libnpth.so $(LOCAL)/lib/libcurl.so $(LOCAL)/lib/libiconv.so gnupg/Makefile +gnupg/g10/gpg2: $(LOCAL)/lib/libgpg-error.so $(LOCAL)/lib/libgcrypt.so $(LOCAL)/lib/libksba.so $(LOCAL)/lib/libnpth.so $(LOCAL)/lib/libassuan.so $(LOCAL)/lib/libcurl.so $(LOCAL)/lib/libiconv.so gnupg/Makefile $(MAKE) -C gnupg -$(LOCAL)/bin/gpg: gnupg/g10/gpg gnupg/configure +$(LOCAL)/bin/gpg2: gnupg/g10/gpg2 gnupg/configure $(MAKE) -C gnupg prefix=$(LOCAL) install - ls -l $(LOCAL)/bin/gpg + ls -l $(LOCAL)/bin/gpg2 -gnupg-build: gnupg/g10/gpg +gnupg-build: gnupg/g10/gpg2 -gnupg-install: $(LOCAL)/bin/gpg +gnupg-install: $(LOCAL)/bin/gpg2 install -d $(LOCAL)/etc/gnupg install -d $(LOCAL)/var/run/gnupg install -d $(LOCAL)/var/cache/gnupg @@ -406,7 +399,7 @@ gnupg-install: $(LOCAL)/bin/gpg #------------------------------------------------------------------------------# # gpgme -EXTERNAL_GIT_REPOS += gpgme|git://git.gnupg.org/gpgme.git?gpgme-1.12.0 +EXTERNAL_GIT_REPOS += gpgme|git://git.gnupg.org/gpgme.git?gpgme-1.8.0 gpgme/configure: gpgme.src.stamp gpgme/configure.ac cd gpgme && ./autogen.sh @@ -419,8 +412,6 @@ endif gpgme/Makefile: gpgme/configure -patch -N -p1 --reject-file=- gpgme/m4/libtool.m4 libtool-Add-Android-Linux-support.patch - -sed -i 's/$${tests} doc//' gpgme/Makefile.am - cd gpgme && \ CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ @@ -429,7 +420,6 @@ gpgme/Makefile: gpgme/configure --enable-maintainer-mode \ --with-gpg-error-prefix=$(LOCAL) \ --with-libassuan-prefix=$(LOCAL) \ - --with-npth-prefix=$(LOCAL) \ --enable-fixed-path=$(prefix)/bin \ --disable-glibtest \ --disable-gpg-test \ @@ -438,7 +428,6 @@ gpgme/Makefile: gpgme/configure --disable-g13-test \ --prefix=$(prefix) \ --enable-languages=cl - -sed -i 's/$${tests} doc//' gpgme/Makefile gpgme/src/.libs/libgpgme.so: gpgme/Makefile @@ -449,7 +438,7 @@ $(LOCAL)/lib/libgpgme.so: gpgme/src/.libs/libgpgme.so gpgme-build: gpgme/src/.libs/libgpgme.so -gpgme-install: $(LOCAL)/bin/gpg $(LOCAL)/lib/libgpgme.so +gpgme-install: $(LOCAL)/bin/gpg2 $(LOCAL)/lib/libgpgme.so #------------------------------------------------------------------------------# # libetpan diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 7951e5e..bad76b9 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -7,11 +7,6 @@ LOCAL_MODULE := libassuan LOCAL_SRC_FILES := $(GPGBUILD)/lib/libassuan.so include $(PREBUILT_SHARED_LIBRARY) -include $(CLEAR_VARS) -LOCAL_MODULE := libnpth -LOCAL_SRC_FILES := $(GPGBUILD)/lib/libnpth.so -include $(PREBUILT_SHARED_LIBRARY) - include $(CLEAR_VARS) LOCAL_MODULE := libcurl LOCAL_SRC_FILES := $(GPGBUILD)/lib/libcurl.so @@ -61,7 +56,7 @@ $(shell sh $(ENGINE_PATH)/build-android/takeOutHeaderFiles.sh $(ENGINE_PATH)) include $(CLEAR_VARS) LOCAL_MODULE := pEpJNI -LOCAL_SHARED_LIBRARIES := libgpgme libassuan libcurl libgcrypt libgpg-error libnpth +LOCAL_SHARED_LIBRARIES := libgpgme libassuan libcurl libgcrypt libgpg-error LOCAL_STATIC_LIBRARIES := pEpEngine libetpan libiconv libuuid LOCAL_CPP_FEATURES += exceptions LOCAL_CFLAGS += -DHAVE_PTHREADS diff --git a/android/jni/Application.mk b/android/jni/Application.mk index 0e7d1e7..2740c89 100644 --- a/android/jni/Application.mk +++ b/android/jni/Application.mk @@ -1,4 +1,4 @@ -APP_STL := c++_shared +APP_STL := c++_static APP_OPTIM := debug APP_PLATFORM=android-18 APP_ABI := armeabi-v7a diff --git a/android/jni/org_pEp_jniadapter_AndroidHelper.cc b/android/jni/org_pEp_jniadapter_AndroidHelper.cc index 4c3b6d9..28e37c6 100644 --- a/android/jni/org_pEp_jniadapter_AndroidHelper.cc +++ b/android/jni/org_pEp_jniadapter_AndroidHelper.cc @@ -25,7 +25,7 @@ JNIEXPORT jint JNICALL Java_org_pEp_jniadapter_AndroidHelper_nativeSetup gpgme_set_global_flag("debug", cdebugflag); env->ReleaseStringUTFChars(debugflag, cdebugflag); gpgme_set_global_flag ("disable-gpgconf", ""); - gpgme_set_global_flag ("gpg-name", "gpg"); + gpgme_set_global_flag ("gpg-name", "gpg2"); return 0; } diff --git a/android/src/org/pEp/jniadapter/AndroidHelper.java b/android/src/org/pEp/jniadapter/AndroidHelper.java index ebbf7a3..ec8b8a0 100644 --- a/android/src/org/pEp/jniadapter/AndroidHelper.java +++ b/android/src/org/pEp/jniadapter/AndroidHelper.java @@ -27,9 +27,9 @@ public class AndroidHelper { public static File binDir; public static File libDir; private static File tmpDir; - + // TODO : Increment when needed. - public static int ENGINE_VERSION_CODE = 3052; + public static int ENGINE_VERSION_CODE = 2779; private static File shareDir;