Browse Source

merge in JNI-96 - Make import_key return identity list instead of void

pull/2/head Release_2.1.0-RC6
heck 5 years ago
parent
commit
497a7206bb
  1. 17
      src/basic_api.cc
  2. 19
      src/gen_java_Engine.ysl2
  3. 2
      src/pEp.yml2
  4. 37
      test/java/foundation/pEp/jniadapter/test/jni96/Makefile
  5. 70
      test/java/foundation/pEp/jniadapter/test/jni96/TestAlice.java
  6. 4
      test/java/foundation/pEp/jniadapter/test/utils/AdapterBaseTestContext.java
  7. 29
      test/resources/test_keys/alicenew-pub.asc
  8. 55
      test/resources/test_keys/alicenew-sec.asc

17
src/basic_api.cc

@ -252,7 +252,7 @@ JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_Engine__1trustOwnKey(
::trust_own_key(session(), _ident);
}
JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_Engine_importKey(
JNIEXPORT jobject JNICALL Java_foundation_pEp_jniadapter_Engine__1importKey(
JNIEnv *env,
jobject obj,
jbyteArray key
@ -271,18 +271,27 @@ JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_Engine_importKey(
if(_key == NULL){
throw_pEp_Exception(env, PEP_OUT_OF_MEMORY);
return;
return NULL;
}
PEP_STATUS status = ::import_key(session(), _key, _size, NULL);
identity_list *_identities;
PEP_STATUS status = ::import_key(session(), _key, _size, &_identities);
if (status != PEP_STATUS_OK && status != PEP_KEY_IMPORTED) {
throw_pEp_Exception(env, status);
return;
return NULL;
}
jobject identities_ = NULL;
if (_identities) {
identities_ = from_identitylist(env, _identities);
}
env->ReleaseByteArrayElements(key, (jbyte *) _key, JNI_ABORT);
return identities_;
}
JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_Engine__1config_1passive_1mode(
JNIEnv *env,
jobject obj,

19
src/gen_java_Engine.ysl2

@ -30,7 +30,7 @@ tstylesheet {
const "jtype" call "toJava" with "type", "@type";
choose {
when "name(parm/*[1])='bytearray'"
when "name(parm/*[1])='bytearray|identitylist'"
||
public native «$itype» «@name»(`apply "parm/*", mode=basic_iparm`);
@ -49,7 +49,18 @@ tstylesheet {
|> return new Identity(_«@name»(`apply "parm/*", mode=basic_parm_name`));
when "@type = 'bool'"
|> return new Boolean(_«@name»(`apply "parm/*", mode=basic_parm_name`));
otherwise
when "@type = 'identitylist'" {
||
Vector<_Identity> glist = _«@name»(`apply "parm/*", mode=basic_parm_name`);
Vector<Identity> ret = new Vector<Identity>();
if(glist != null) {
for (_Identity i : glist) {
ret.add(new Identity(i));
}
}
return ret;
||
} otherwise
|> return AbstractEngine.toUTF16(_«@name»(`apply "parm/*", mode=basic_parm_name`));
}
||
@ -83,6 +94,8 @@ tstylesheet {
> IdentityList
when "name(.) = 'bool'"
> Boolean
when "name(.) = 'bytearray'"
> byte[]
otherwise
> «name(.)»
}
@ -115,6 +128,8 @@ tstylesheet {
| «$pitype» _«$pname» = «$pname».getBytes();
when "$ptype = 'bool'"
| «$pitype» _«$pname» = «$pname».booleanValue();
when "$ptype = 'bytearray'"
| «$pitype» _«$pname» = «$pname».clone();
when "$ptype = 'int'"
| «$pitype» _«$pname» = «$pname»;
when "ancestor::namespace/child::enum[@name=$ptype]"

2
src/pEp.yml2

@ -267,7 +267,7 @@ namespace pEp {
basic void keyResetTrust(identity ident);
basic void trustPersonalKey(identity ident);
basic void trustOwnKey(identity ident);
basic void importKey(bytearray key);
basic identitylist importKey(bytearray key);
basic void blacklist_add(string fpr);
basic void blacklist_delete(string fpr);
basic bool blacklist_is_listed(string fpr);

37
test/java/foundation/pEp/jniadapter/test/jni96/Makefile

@ -0,0 +1,37 @@
include ../../../../../../../Makefile.conf
include ../Makefile.conf
TEST_UNIT_NAME=jni96
JAVA_CLASSES = \
TestAlice.class \
../utils/AdapterBaseTestContext.class \
../utils/AdapterTestUtils.class \
../utils/TestCallbacks.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

70
test/java/foundation/pEp/jniadapter/test/jni96/TestAlice.java

@ -0,0 +1,70 @@
package foundation.pEp.jniadapter.test.jni96;
import static foundation.pEp.pitytest.TestLogger.*;
import foundation.pEp.jniadapter.Identity;
import foundation.pEp.pitytest.*;
import foundation.pEp.pitytest.utils.TestUtils;
import foundation.pEp.jniadapter.test.utils.*;
import static foundation.pEp.pitytest.TestLogger.log;
import java.util.Vector;
class TestAlice {
public static void main(String[] args) throws Exception {
TestSuite.getDefault().setVerbose(true);
TestSuite.getDefault().setTestColor(TestUtils.TermColor.GREEN);
new TestUnit<AdapterBaseTestContext>("import_key() 1 pub key",new AdapterBaseTestContext() , ctx -> {
Vector<Identity> privKeys = null;
privKeys = ctx.engine.importKey(ctx.keyAlicePub);
log(AdapterTestUtils.identityListToString(privKeys, false));
assert privKeys.size() == 0: "pub key should not be in return";
});
new TestUnit<AdapterBaseTestContext>("import_key() 1 sec key",new AdapterBaseTestContext() , ctx -> {
Vector<Identity> privKeys = null;
privKeys = ctx.engine.importKey(ctx.keyAliceSec);
log(AdapterTestUtils.identityListToString(privKeys, false));
assert privKeys.size() == 1: "imported sec key should be returned";
});
new TestUnit<AdapterBaseTestContext>("import_key() 2 pub keys",new AdapterBaseTestContext() , ctx -> {
byte[] keys = concat(ctx.keyAlicePub, ctx.keyBobPub);
Vector<Identity> privKeys = null;
privKeys = ctx.engine.importKey(keys);
log(AdapterTestUtils.identityListToString(privKeys, false));
assert privKeys.size() == 0: "imported pub keys should not be returned";
});
new TestUnit<AdapterBaseTestContext>("import_key() 2 sec keys",new AdapterBaseTestContext() , ctx -> {
byte[] keys = concat(ctx.keyAliceSec, ctx.keyBobSec);
Vector<Identity> privKeys = null;
privKeys = ctx.engine.importKey(keys);
log(AdapterTestUtils.identityListToString(privKeys, false));
assert privKeys.size() == 2: "imported sec keys should be returned";
});
new TestUnit<AdapterBaseTestContext>("import_key() 4 keys pub/sec",new AdapterBaseTestContext() , ctx -> {
byte[] keys = concat(ctx.keyAlicePub, concat(ctx.keyAliceSec, concat(ctx.keyBobPub, ctx.keyBobSec)));
Vector<Identity> privKeys = null;
privKeys = ctx.engine.importKey(keys);
log(AdapterTestUtils.identityListToString(privKeys, false));
assert privKeys.size() == 2: "nr of imported keys doesnt match";
});
TestSuite.getDefault().run();
}
public static byte[] concat(byte[] a, byte[] b) {
byte[] c = new byte[a.length + b.length];
System.arraycopy(a, 0, c, 0, a.length);
System.arraycopy(b, 0, c, a.length, b.length);
return c;
}
}

4
test/java/foundation/pEp/jniadapter/test/utils/AdapterBaseTestContext.java

@ -44,10 +44,10 @@ public class AdapterBaseTestContext extends AbstractTestContext {
private String filenameBobPub = "../resources/test_keys/bob-pub.asc";
public byte[] keyAlicePub;
private String filenameAlicePub = "../resources/test_keys/alice-pub.asc";
private String filenameAlicePub = "../resources/test_keys/alicenew-pub.asc";
public byte[] keyAliceSec;
private String filenameAliceSec = "../resources/test_keys/alice-sec.asc";
private String filenameAliceSec = "../resources/test_keys/alicenew-sec.asc";
// Messages
public Message msgToSelf;

29
test/resources/test_keys/alicenew-pub.asc

@ -0,0 +1,29 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF77LLsBEACxl2LCTG3LX0wPSO0N1xV7AZ2eaDWoN7OvtHLAfue97NN+Pgno
Y5hPIoDnj5IeV3wfmB7DSYGZcCDwxQB08jWYfQabCslb+Y3lvFoudI5Ju02vBJgD
UUCJKxTDB63OOd0ip+xZVCImqB3wk6XjzMNQHhWO7tm82kr/VavTu4s2eUQYYwJ7
zDXvNubwNVEANaEgzvlSryALoc9rjSNa6c7RYOKKXKCgu3dBzMahI41XvLEA0SP9
9IK83/1tJo/Vtx8e38m+/2Jok1DBR2umfum7cX296RueS6ZIZyDgJ4tLTbtJ/vOC
oxBPDnwKYakEGRHTi2ZJS/TCh21XWMeRap1UGgLPBkwyuU4+Rr8unEglrgUfHw5t
jPfoDb02jyFXlG+O+X7PQAxPU9dynDx2Be8UJsPU+5qyZsDH8yl11reWEOtkIa+s
XQ9kkK5MQ+v4Pa1OfGIccFq4ugsWscqEDVCLNfdxqaAU8WSZza7E3LR4poKHVe10
wzctxDu+aJNqOKDePdMBkp3zej5rZkm97a3DJa5IsWGfluaV02kl0hg27/lP6yu1
n8oS/GSnRh7O2gL9T7m0JO6Rfhsc/LOy+5/MAl5Jven/qtdRYPm9HEF3lj4zebPS
V1j1kkSuGjSnJWyouz5Zt8a520WN1i81iOZWYjC/Kdm3g9a6rKUvjXXmQwARAQAB
tBlhbGljZSA8YWxpY2VAcGVwdGVzdC5vcmc+iQJUBBMBCgA+FiEEpQcDf0hg4gMz
sPkzUANH/1pQNMUFAl77LLsCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgEC
F4AACgkQUANH/1pQNMWs/hAApmKtGrgNcdvfecKjV+6tCApp6enFqMOZj/JxUV6R
3ihMD7bvQtlww+TyqL3OjCSJn/28t93QAjJvFPQRI9cq0p9F0WaxXqmUH8O+f6mz
rgpbnBDJzujBNOTFXJO8CygxD7r2g3ymxIycB3x9LNKg0id0uBKPyOaMFmaB9BrW
pn6TngljSHEjzmxDp1ERKxbHRhqhQishh3xIB0hPUdOIyy00nEknG7q/CIqqb8In
iLs+G7l4g/ARpjxTucZj0/h1svsY1uB52JgsfL88bgu/ir8lmg0AWkd/AEN9WSit
0ZgxEcVnqP3MxkJMaQipWXYtzGpKrmOnEh+D9Ni4Y1gw/4p6gCR+nlfY54JftSG5
btniW+aqleTwqTqaJtOyAg5D4y2lulnMyrIkA2hnJjY5fin4LUBAW6IgsmqcdCUT
RJmwOJIa466AROUMDL/tdErYhVVTSTAeuQD/VE2rfwmYrVXRg3mGYZS++hG9rXEF
IN7L6SzgKNO84WSHjmQi9o1XMXGYPc4w7ICG/vwxwlpDeTEYNQknDTnZNS8mdqtU
x1zjgOVfs4bfotWxh3KV0ZbwQyZw+jhcbb/bU2VxUMEKyN3sRxMYuo5lGNLShVFx
mE9bF+17VxGQIQvcne1kfETNdGJPH15Zt1hLACSmwn5H5wy+yj9ZhtLpmNuHMO7V
qf8=
=40gV
-----END PGP PUBLIC KEY BLOCK-----

55
test/resources/test_keys/alicenew-sec.asc

@ -0,0 +1,55 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
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
=4Oz/
-----END PGP PRIVATE KEY BLOCK-----
Loading…
Cancel
Save