From 7eb00c95b3bf7ee8cb1aa4cbf6c6c6da6a57d0b3 Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Fri, 21 Aug 2015 14:49:15 +0200 Subject: [PATCH] keyCompromized --- src/basic_api.cc | 94 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/basic_api.cc diff --git a/src/basic_api.cc b/src/basic_api.cc new file mode 100644 index 0000000..439da33 --- /dev/null +++ b/src/basic_api.cc @@ -0,0 +1,94 @@ +#include + +#include "throw_pEp_exception.hh" +#include "jniutils.hh" + +using namespace pEp::JNIAdapter; + +extern "C" { +JNIEXPORT jobject JNICALL Java_org_pEp_jniadapter_Engine_trustwords( + JNIEnv *env, + jobject obj, + jobject ident + ) +{ + PEP_SESSION session = (PEP_SESSION) callLongMethod(env, obj, "getHandle"); + pEp_identity *_ident = to_identity(env, ident); + char *words; + size_t wsize; + + if (_ident->fpr == NULL || _ident->fpr[0] == 0) { + if (_ident->me) + ::myself(session, _ident); + else + ::update_identity(session, _ident); + } + + if (_ident->fpr == NULL || _ident->fpr[0] == 0) { + throw_pEp_Exception(env, PEP_CANNOT_FIND_IDENTITY); + return NULL; + } + + PEP_STATUS status = ::trustwords(session, _ident->fpr, _ident->lang, &words, &wsize, 10); + if (status != PEP_STATUS_OK) { + throw_pEp_Exception(env, status); + return NULL; + } + + return from_string(env, words); +} + +JNIEXPORT jobject JNICALL Java_org_pEp_jniadapter_Engine_myself( + JNIEnv *env, + jobject obj, + jobject ident + ) +{ + PEP_SESSION session = (PEP_SESSION) callLongMethod(env, obj, "getHandle"); + pEp_identity *_ident = to_identity(env, ident); + + ::myself(session, _ident); + + return from_identity(env, _ident); +} + +JNIEXPORT jobject JNICALL Java_org_pEp_jniadapter_Engine_updateIdentity( + JNIEnv *env, + jobject obj, + jobject ident + ) +{ + PEP_SESSION session = (PEP_SESSION) callLongMethod(env, obj, "getHandle"); + pEp_identity *_ident = to_identity(env, ident); + + ::update_identity(session, _ident); + + return from_identity(env, _ident); +} + +JNIEXPORT void JNICALL Java_org_pEp_jniadapter_Engine_keyCompromized( + JNIEnv *env, + jobject obj, + jobject ident + ) +{ + PEP_SESSION session = (PEP_SESSION) callLongMethod(env, obj, "getHandle"); + pEp_identity *_ident = to_identity(env, ident); + + if (_ident->fpr == NULL || _ident->fpr[0] == 0) { + if (_ident->me) + ::myself(session, _ident); + else + ::update_identity(session, _ident); + } + + if (_ident->fpr == NULL || _ident->fpr[0] == 0) { + throw_pEp_Exception(env, PEP_CANNOT_FIND_IDENTITY); + return; + } + + ::key_compromized(session, _ident->fpr); +} + +} // extern "C" +