diff --git a/src/Makefile b/src/Makefile index 89e3450..2ca794a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -128,5 +128,6 @@ clean: rm -f org/pEp/jniadapter/Status.java rm -f org/pEp/jniadapter/SyncHandshakeResult.java rm -f org/pEp/jniadapter/SyncHandshakeSignal.java + rm -f org/pEp/jniadapter/CipherSuite.java rm -f throw_pEp_exception.* rm -f org_pEp_jniadapter_Message.cc org_pEp_jniadapter_Engine.cc diff --git a/src/gen_cpp_Engine.ysl2 b/src/gen_cpp_Engine.ysl2 index d952842..b74ae97 100644 --- a/src/gen_cpp_Engine.ysl2 +++ b/src/gen_cpp_Engine.ysl2 @@ -166,7 +166,6 @@ tstylesheet { || } - when "ancestor::namespace/child::enum[@name=$type]" { const "ljtype" call "lcase" with "text","$jtype"; || @@ -225,7 +224,7 @@ tstylesheet { choose { when "$type = 'message'" | message *_«$name» = (message *) callLongMethod(env, «$name», "getHandle"); - when "$type='EncFormat' or $type='SyncHandshakeResult'" + when "$type='EncFormat' or $type='SyncHandshakeResult' or $type='CipherSuite'" | √$type _«$name» = to_«$type»(env, «$name»); when "$type='bool'" | bool _«$name» = (bool) «$name»; diff --git a/src/jniutils.cc b/src/jniutils.cc index f20430a..95ff764 100644 --- a/src/jniutils.cc +++ b/src/jniutils.cc @@ -698,6 +698,17 @@ namespace pEp { return (PEP_enc_format) env->GetIntField(obj, field_value); } + PEP_CIPHER_SUITE to_CipherSuite(JNIEnv *env, jobject obj) + { + static const char *classname = "org/pEp/jniadapter/Message$CipherSuite"; + jclass clazz_enc_format = findClass(env, classname); + jfieldID field_value = env->GetFieldID(clazz_enc_format, "value", "I"); + assert(field_value); + + env->DeleteLocalRef(clazz_enc_format); + return (PEP_CIPHER_SUITE) env->GetIntField(obj, field_value); + } + sync_handshake_result to_SyncHandshakeResult(JNIEnv *env, jobject obj) { static const char *classname = "org/pEp/jniadapter/SyncHandshakeResult"; diff --git a/src/jniutils.hh b/src/jniutils.hh index 9794cff..7fb2b04 100644 --- a/src/jniutils.hh +++ b/src/jniutils.hh @@ -91,6 +91,7 @@ namespace pEp { bloblist_t *to_bloblist(JNIEnv *env, jobject obj); PEP_enc_format to_EncFormat(JNIEnv *env, jobject obj); + PEP_CIPHER_SUITE to_CipherSuite(JNIEnv *env, jobject obj); sync_handshake_result to_SyncHandshakeResult(JNIEnv *env, jobject obj); }; diff --git a/src/pEp.yml2 b/src/pEp.yml2 index 163cf90..8efea21 100644 --- a/src/pEp.yml2 +++ b/src/pEp.yml2 @@ -112,18 +112,6 @@ namespace pEp { PEP_color_red > -1 }; - enum CypherSuite { - pEp_cipher_suite_default > 0 - pEp_cipher_suite_cv25519 > 1 - pEp_cipher_suite_p256 > 2 - pEp_cipher_suite_p384 > 3 - pEp_cipher_suite_p521 > 4 - pEp_cipher_suite_rsa2k > 5 - pEp_cipher_suite_rsa3k > 6 - pEp_cipher_suite_rsa4k > 7 - pEp_cipher_suite_rsa8k > 8 - }; - enum Rating { pEp_rating_undefined > 0 pEp_rating_cannot_decrypt > 1 @@ -175,6 +163,18 @@ namespace pEp { sync_notify_in_group > 255 }; + enum CipherSuite { + pEp_cipher_suite_default > 0 + pEp_cipher_suite_cv25519 > 1 + pEp_cipher_suite_p256 > 2 + pEp_cipher_suite_p384 > 3 + pEp_cipher_suite_p521 > 4 + pEp_cipher_suite_rsa2k > 5 + pEp_cipher_suite_rsa3k > 6 + pEp_cipher_suite_rsa4k > 7 + pEp_cipher_suite_rsa8k > 8 + }; + interface Engine { method encrypt_message( in message src, @@ -296,6 +296,10 @@ namespace pEp { in identitylist identities ); + method config_cipher_suite( + in CipherSuite suite + ); + basic string trustwords(identity ident); basic identity myself(identity ident); basic identity updateIdentity(identity ident); diff --git a/src/types_c.ysl2 b/src/types_c.ysl2 index 0621bd0..1ec81ea 100644 --- a/src/types_c.ysl2 +++ b/src/types_c.ysl2 @@ -16,6 +16,7 @@ function "toC" { when "$type='Color'" > PEP_color when "$type='Rating'" > PEP_rating when "$type='SyncHandshakeResult'" > sync_handshake_result + when "$type='CipherSuite'" > PEP_CIPHER_SUITE otherwise value "$type"; }