Compare commits

...

4 Commits

Author SHA1 Message Date
heck 5b96104a08 Test: Add 3 years ago
heck faad59edde Make Engine.provision() a static method 3 years ago
heck 2c6b8c94ad Build: add new dependencies 3 years ago
heck 394a272b53 Add API method "provision(url)" 3 years ago
  1. 56
      Makefile.conf
  2. 3
      src/Makefile
  3. 22
      src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc
  4. 7
      src/java/foundation/pEp/jniadapter/AbstractEngine.java
  5. 34
      test/java/foundation/pEp/jniadapter/test/jni178/Makefile
  6. 45
      test/java/foundation/pEp/jniadapter/test/jni178/TestAlice.java

56
Makefile.conf

@ -16,11 +16,25 @@ PREFIX=$(HOME)
YML2_PATH=$(PREFIX)/src/yml2
YML2_PROC=$(YML2_PATH)/yml2proc $(YML2_OPTS)
YML2_OPTS=--encoding=utf8
ENGINE_LIB_PATH=$(PREFIX)/lib
ENGINE_INC_PATH=$(PREFIX)/include
AD_LIB_PATH=$(PREFIX)/lib
AD_INC_PATH=$(PREFIX)/include
BOOST_INCLUDE?=$(PREFIX)/include
BOOST_LIB?=$(PREFIX)/lib
CRYPTOPP_INCLUDE?=$(PREFIX)/include
CRYPTOPP_LIB?=$(PREFIX)/lib
OPENSSL_INCLUDE?=$(HOME)/include
OPENSSL_LIB?=$(HOME)/lib
LIBZ_INCLUDE?=$(HOME)/include
LIBZ_LIB?=$(HOME)/lib
### Guessing JAVA_HOME
ifeq ($(PLATFORM),linux)
@ -37,12 +51,6 @@ else
$(info Optional build config not found: $(HERE)local.conf)
endif
### Apply config
ENGINE_LIB=-L$(ENGINE_LIB_PATH)
ENGINE_INC=-I$(ENGINE_INC_PATH)
AD_LIB=-L$(AD_LIB_PATH)
AD_INC=-I$(AD_INC_PATH)
ifndef JAVA_HOME
$(error JAVA_HOME is not set!)
endif
@ -61,9 +69,39 @@ endif
JAVA_BIN_DIR=$(JAVA_HOME)/bin
######### C and C++ #########
CXXFLAGS+=-O0 -std=c++11 -fpermissive -fPIC -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/$(PLATFORM) $(AD_INC) $(ENGINE_INC)
LDFLAGS+=-shared $(ENGINE_LIB) $(AD_LIB)
LDLIBS=-lstdc++ -lpEpEngine -lpEpAdapter
CXXFLAGS+=-O0 -std=c++17 -fpermissive -fPIC
INCLUDES+=-I$(JAVA_HOME)/include
INCLUDES+=-I$(JAVA_HOME)/include/$(PLATFORM)
INCLUDES+=-I$(AD_INC_PATH)
INCLUDES+=-I$(ENGINE_INC_PATH)
INCLUDES+=-I$(BOOST_INCLUDE)
INCLUDES+=-I$(CRYPTOPP_INCLUDE)
INCLUDES+=-I$(OPENSSL_INCLUDE)
INCLUDES+=-I$(LIBZ_INCLUDE)
CXXFLAGS+=$(INCLUDES)
LDFLAGS+=-shared
LIBS+=-L$(ENGINE_LIB_PATH)
LIBS+=-L$(AD_LIB_PATH)
LIBS+=-L$(BOOST_LIB)
LIBS+=-L$(CRYPTOPP_LIB)
LIBS+=-L$(OPENSSL_LIB)
LIBS+=-L$(LIBZ_LIB)
LIBS+=-lstdc++
LIBS+=-lpEpEngine
LIBS+=-lpEpAdapter
LIBS+=-lsignedpkg
LIBS+=-ldownloadclient
LIBS+=-larchive
LIBS+=-lboost_regex
LIBS+=-lboost_iostreams
LIBS+=-lboost_system
LIBS+=-lz
LIBS+=-lcryptopp
LIBS+=-lcrypto
LIBS+=-lssl
LDFLAGS+=$(LIBS)
ifneq (,$(findstring g++,$(CXX)))
CXXFLAGS+=-fdiagnostics-color=always
else ifneq (,$(findstring clang,$(CXX)))

3
src/Makefile

@ -41,7 +41,6 @@ $(info AD_INC_PATH: $(AD_INC_PATH))
$(info YML2_PATH: $(YML2_PATH))
$(info CXXFLAGS: $(CXXFLAGS))
$(info LDFLAGS: $(LDFLAGS))
$(info LDLIBS: $(LDLIBS))
$(info ---------------------------------------------------)
# Dirs
@ -122,7 +121,7 @@ $(LIB_JAVA): compile-java
$(JAVA_BIN_DIR)/jar cf $@ -C $(JAVA_BUILD_ROOT) foundation
$(LIB_CXX_DYN): compile-cxx
$(CXX) $(OBJ_DIR)*.o $(LDFLAGS) $(LDLIBS) -o $@
$(CXX) $(OBJ_DIR)*.o $(LDFLAGS) -o $@
$(LIB_CXX_STATIC): compile-cxx
$(AR) -r $@ $(OBJ_DIR)*.o

22
src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc

@ -1,4 +1,7 @@
#include "foundation_pEp_jniadapter_AbstractEngine.h"
#include <iostream>
#include <pEp/unpack.hh>
#include <cryptopp/xed25519.h>
#include <pEp/keymanagement.h>
#include <pEp/message_api.h>
#include <pEp/sync_api.h>
@ -289,6 +292,25 @@ JNIEXPORT jboolean JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1getDe
return static_cast<jboolean>(Adapter::pEpLog::get_enabled());
}
JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1provision(JNIEnv *env,
jclass clazz,
jbyteArray url)
{
const char *_url = to_string(env, url);
std::cout << "PROVISION: " << _url << std::endl;
pEp::UpdateClient::product p { "provisioning data", std::string(_url) };
pEp::UpdateClient::PublicKey update_key;
pEp::UpdateClient::load_key("update_key.der");
CryptoPP::ed25519PublicKey deployment_key;
SignedPackage::LoadPublicKey("deployment_key-pub.der", deployment_key);
CryptoPP::RSA::PrivateKey provisioning_key;
SignedPackage::LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::provision_user(p, update_key, deployment_key, provisioning_key);
}
JNIEXPORT jstring JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1getVersion(JNIEnv *env,
jobject obj)
{

7
src/java/foundation/pEp/jniadapter/AbstractEngine.java

@ -49,6 +49,13 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn
private native static boolean _getDebugLogEnabled();
// CodeGen "basic"
public static void provision(String url) {
byte[] _url = Utils.toUTF8(url);
_provision(_url);
}
private static native void _provision(byte[] url);
public String getVersion() {
return _getVersion();

34
test/java/foundation/pEp/jniadapter/test/jni178/Makefile

@ -0,0 +1,34 @@
include ../../../../../../../Makefile.conf
include ../Makefile.conf
TEST_UNIT_NAME=jni178
JAVA_CLASSES+= \
TestAlice.class
.PHONY: pitytest compile alice test clean
all: alice compile
pitytest:
$(MAKE) -C $(PITYTEST_DIR)
alice: compile clean-pep-home-alice
cd $(JAVA_CWD);pwd;HOME=$(JAVA_PEP_HOME_DIR_ALICE) $(JAVA) $(JAVA_PKG_BASENAME).$(TEST_UNIT_NAME).TestAlice
compile: $(JAVA_CLASSES) pitytest
%.class: %.java
cd $(JAVA_CWD);javac -cp $(CLASSPATH) $(JAVA_PKG_BASEPATH)/$(TEST_UNIT_NAME)/$<
clean:
rm -f $(JAVA_CLASSES)
rm -f *.class
rm -f *.log
rm -Rf .gnupg
rm -Rf .lldb
clean-pep-home: clean-pep-home-alice
clean-pep-home-alice:
rm -rf $(PEP_HOME_DIR_ALICE)/.pEp

45
test/java/foundation/pEp/jniadapter/test/jni178/TestAlice.java

@ -0,0 +1,45 @@
package foundation.pEp.jniadapter.test.jni178;
import foundation.pEp.jniadapter.Engine;
import foundation.pEp.jniadapter.Identity;
import foundation.pEp.jniadapter.test.utils.AdapterTestUtils;
import foundation.pEp.jniadapter.test.utils.CTXBase;
import foundation.pEp.pitytest.AbstractTestContext;
import foundation.pEp.pitytest.TestContextInterface;
import foundation.pEp.pitytest.TestSuite;
import foundation.pEp.pitytest.TestUnit;
import foundation.pEp.pitytest.utils.TestUtils;
import static foundation.pEp.pitytest.TestLogger.log;
/*
JNI-178 - Add provision_user() from signedpkg
Expected Behaviour
*/
class CTXNull extends AbstractTestContext {
@Override
public TestContextInterface init() throws Throwable {
return this;
}
}
class TestAlice {
public static void main(String[] args) throws Exception {
TestSuite.getDefault().setVerbose(true);
TestSuite.getDefault().setTestColor(TestUtils.TermColor.GREEN);
Engine.setDebugLogEnabled(true);
CTXNull ctxNull = new CTXNull();
new TestUnit<CTXNull>("provision", ctxNull, ctx -> {
Engine.provision("update://updateserver.pEp.test");
});
TestSuite.getDefault().run();
}
}
Loading…
Cancel
Save