Integrate MaaS support Integrate list users per backend and list backends
Project: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-android/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-android/commit/f914e067 Tree: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-android/tree/f914e067 Diff: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-android/diff/f914e067 Branch: refs/heads/master Commit: f914e067f27aea0166416981d29e520973b69973 Parents: 8dc0481 Author: Vassil Angelov <vassil.ange...@miracl.com> Authored: Fri Apr 1 17:24:02 2016 +0300 Committer: Vladislav Mitov <vladislav.mi...@gmail.com> Committed: Mon May 9 10:27:21 2016 +0300 ---------------------------------------------------------------------- mpin-sdk-core | 2 +- .../main/java/com/miracl/mpinsdk/MPinSDK.java | 30 ++++++- mpinsdk/src/main/jni/JNIMPinSDK.cpp | 90 +++++++++++++++++--- 3 files changed, 106 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-android/blob/f914e067/mpin-sdk-core ---------------------------------------------------------------------- diff --git a/mpin-sdk-core b/mpin-sdk-core index 441caba..58448b9 160000 --- a/mpin-sdk-core +++ b/mpin-sdk-core @@ -1 +1 @@ -Subproject commit 441cabaa96a916db82ae9c5a092336117b703196 +Subproject commit 58448b9b6a1a05e8f5f662bd6c34a0192dca43c8 http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-android/blob/f914e067/mpinsdk/src/main/java/com/miracl/mpinsdk/MPinSDK.java ---------------------------------------------------------------------- diff --git a/mpinsdk/src/main/java/com/miracl/mpinsdk/MPinSDK.java b/mpinsdk/src/main/java/com/miracl/mpinsdk/MPinSDK.java index 15e8eb3..3077eb5 100644 --- a/mpinsdk/src/main/java/com/miracl/mpinsdk/MPinSDK.java +++ b/mpinsdk/src/main/java/com/miracl/mpinsdk/MPinSDK.java @@ -117,6 +117,10 @@ public class MPinSDK implements Closeable { return nStartAuthentication(mPtr, user); } + public Status StartAuthentication(User user, String accessCode) { + return nStartAuthenticationAccessCode(mPtr, user, accessCode); + } + public Status CheckAccessNumber(String accessNumber) { return nCheckAccessNumber(mPtr, accessNumber); } @@ -137,12 +141,24 @@ public class MPinSDK implements Closeable { return nFinishAuthenticationAN(mPtr, user, pin, accessNumber); } + public String GetPrerollUserId(String accessCode) { + return nGetPrerollUserId(mPtr, accessCode); + } + public void DeleteUser(User user) { nDeleteUser(mPtr, user); } - public void ListUsers(List<User> users) { - nListUsers(mPtr, users); + public Status ListUsers(List<User> users) { + return nListUsers(mPtr, users); + } + + public Status ListUsers(List<User> users, String backend) { + return nListUsersForBackend(mPtr, users, backend); + } + + public Status ListBackends(List<String> backends) { + return nListBackends(mPtr, backends); } public String GetVersion() { @@ -187,6 +203,8 @@ public class MPinSDK implements Closeable { private native Status nStartAuthentication(long ptr, User user); + private native Status nStartAuthenticationAccessCode(long ptr, User user, String accessCode); + private native Status nCheckAccessNumber(long ptr, String accessNumber); private native Status nFinishAuthentication(long ptr, User user, String pin); @@ -197,9 +215,15 @@ public class MPinSDK implements Closeable { private native Status nFinishAuthenticationAN(long ptr, User user, String pin, String accessNumber); + private native String nGetPrerollUserId(long ptr, String key); + private native void nDeleteUser(long ptr, User user); - private native void nListUsers(long ptr, List<User> users); + private native Status nListUsers(long ptr, List<User> users); + + private native Status nListUsersForBackend(long ptr, List<User> users, String backend); + + private native Status nListBackends(long ptr, List<String> backends); private native String nGetVersion(long ptr); http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-android/blob/f914e067/mpinsdk/src/main/jni/JNIMPinSDK.cpp ---------------------------------------------------------------------- diff --git a/mpinsdk/src/main/jni/JNIMPinSDK.cpp b/mpinsdk/src/main/jni/JNIMPinSDK.cpp index 7537d8d..4f684b3 100644 --- a/mpinsdk/src/main/jni/JNIMPinSDK.cpp +++ b/mpinsdk/src/main/jni/JNIMPinSDK.cpp @@ -118,6 +118,12 @@ static jobject nStartAuthentication(JNIEnv* env, jobject jobj, jlong jptr, jobje return MakeJavaStatus(env, sdk->StartAuthentication(JavaToMPinUser(env, juser))); } +static jobject nStartAuthenticationAccessCode(JNIEnv* env, jobject jobj, jlong jptr, jobject juser, jstring accessCode) +{ + MPinSDK* sdk = (MPinSDK*) jptr; + return MakeJavaStatus(env, sdk->StartAuthentication(JavaToMPinUser(env, juser),JavaToStdString(env,accessCode))); +} + static jobject nCheckAccessNumber(JNIEnv* env, jobject jobj, jlong jptr, jstring jaccessNumber) { MPinSDK* sdk = (MPinSDK*) jptr; @@ -177,29 +183,85 @@ static jobject nFinishAuthenticationAN(JNIEnv* env, jobject jobj, jlong jptr, jo return MakeJavaStatus(env, sdk->FinishAuthenticationAN(JavaToMPinUser(env, juser), JavaToStdString(env, jpin), JavaToStdString(env, jaccessNumber))); } +static jstring nGetPrerollUserId(JNIEnv* env, jobject jobj, jlong jptr, jstring jaccessCode) +{ + MPinSDK* sdk = (MPinSDK*) jptr; + MPinSDK::String result = sdk->GetPrerollUserId(JavaToStdString(env, jaccessCode)); + return env->NewStringUTF(result.c_str()); +} + static void nDeleteUser(JNIEnv* env, jobject jobj, jlong jptr, jobject juser) { MPinSDK* sdk = (MPinSDK*) jptr; sdk->DeleteUser(JavaToMPinUser(env, juser)); } -static void nListUsers(JNIEnv* env, jobject jobj, jlong jptr, jobject jusersList) +static jobject nListUsers(JNIEnv* env, jobject jobj, jlong jptr, jobject jusersList) { MPinSDK* sdk = (MPinSDK*) jptr; std::vector<MPinSDK::UserPtr> users; - sdk->ListUsers(users); + MPinSDK::Status status = sdk->ListUsers(users); - jclass clsList = env->FindClass("java/util/List"); - jmethodID midAdd = env->GetMethodID(clsList, "add", "(Ljava/lang/Object;)Z"); + if(status == MPinSDK::Status::OK) + { + jclass clsList = env->FindClass("java/util/List"); + jmethodID midAdd = env->GetMethodID(clsList, "add", "(Ljava/lang/Object;)Z"); - jclass clsUser = env->FindClass("com/miracl/mpinsdk/model/User"); - jmethodID ctorUser = env->GetMethodID(clsUser, "<init>", "(J)V"); + jclass clsUser = env->FindClass("com/miracl/mpinsdk/model/User"); + jmethodID ctorUser = env->GetMethodID(clsUser, "<init>", "(J)V"); - for (std::vector<MPinSDK::UserPtr>::iterator i = users.begin(); i != users.end(); ++i) { - MPinSDK::UserPtr user = *i; - jobject juser = env->NewObject(clsUser, ctorUser, (jlong) new MPinSDK::UserPtr(user)); - env->CallBooleanMethod(jusersList, midAdd, juser); - } + for (std::vector<MPinSDK::UserPtr>::iterator i = users.begin(); i != users.end(); ++i) { + MPinSDK::UserPtr user = *i; + jobject juser = env->NewObject(clsUser, ctorUser, (jlong) new MPinSDK::UserPtr(user)); + env->CallBooleanMethod(jusersList, midAdd, juser); + } + } + + return MakeJavaStatus(env,status); +} + +static jobject nListUsersForBackend(JNIEnv* env, jobject jobj, jlong jptr, jobject jusersList, jstring jbackend) +{ + MPinSDK* sdk = (MPinSDK*) jptr; + std::vector<MPinSDK::UserPtr> users; + MPinSDK::Status status = sdk->ListUsers(users,JavaToStdString(env,jbackend)); + + if(status == MPinSDK::Status::OK) + { + jclass clsList = env->FindClass("java/util/List"); + jmethodID midAdd = env->GetMethodID(clsList, "add", "(Ljava/lang/Object;)Z"); + + jclass clsUser = env->FindClass("com/miracl/mpinsdk/model/User"); + jmethodID ctorUser = env->GetMethodID(clsUser, "<init>", "(J)V"); + + for (std::vector<MPinSDK::UserPtr>::iterator i = users.begin(); i != users.end(); ++i) { + MPinSDK::UserPtr user = *i; + jobject juser = env->NewObject(clsUser, ctorUser, (jlong) new MPinSDK::UserPtr(user)); + env->CallBooleanMethod(jusersList, midAdd, juser); + } + } + + return MakeJavaStatus(env,status); +} + +static jobject nListBackends(JNIEnv* env, jobject jobj, jlong jptr,jobject jBackendsList) +{ + MPinSDK* sdk = (MPinSDK*) jptr; + std::vector<MPinSDK::String> backends; + MPinSDK::Status status = sdk->ListBackends(backends); + + if(status == MPinSDK::Status::OK) + { + jclass clsList = env->FindClass("java/util/List"); + jmethodID midAdd = env->GetMethodID(clsList, "add", "(Ljava/lang/Object;)Z"); + + for (std::vector<MPinSDK::String>::iterator i = backends.begin(); i != backends.end(); ++i) { + MPinSDK::String backend = *i; + env->CallBooleanMethod(jBackendsList, midAdd, env->NewStringUTF(backend.c_str())); + } + } + + return MakeJavaStatus(env,status); } static jstring nGetVersion(JNIEnv* env, jobject jobj, jlong jptr) @@ -243,13 +305,17 @@ static JNINativeMethod g_methodsMPinSDK[] = NATIVE_METHOD(nConfirmRegistration, "(JLcom/miracl/mpinsdk/model/User;Ljava/lang/String;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nFinishRegistration, "(JLcom/miracl/mpinsdk/model/User;Ljava/lang/String;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nStartAuthentication, "(JLcom/miracl/mpinsdk/model/User;)Lcom/miracl/mpinsdk/model/Status;"), + NATIVE_METHOD(nStartAuthenticationAccessCode, "(JLcom/miracl/mpinsdk/model/User;Ljava/lang/String;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nCheckAccessNumber, "(JLjava/lang/String;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nFinishAuthentication, "(JLcom/miracl/mpinsdk/model/User;Ljava/lang/String;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nFinishAuthenticationResultData, "(JLcom/miracl/mpinsdk/model/User;Ljava/lang/String;Ljava/lang/StringBuilder;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nFinishAuthenticationOTP, "(JLcom/miracl/mpinsdk/model/User;Ljava/lang/String;Lcom/miracl/mpinsdk/model/OTP;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nFinishAuthenticationAN, "(JLcom/miracl/mpinsdk/model/User;Ljava/lang/String;Ljava/lang/String;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nDeleteUser, "(JLcom/miracl/mpinsdk/model/User;)V"), - NATIVE_METHOD(nListUsers, "(JLjava/util/List;)V"), + NATIVE_METHOD(nGetPrerollUserId, "(JLjava/lang/String;)Ljava/lang/String;"), + NATIVE_METHOD(nListUsers, "(JLjava/util/List;)Lcom/miracl/mpinsdk/model/Status;"), + NATIVE_METHOD(nListUsersForBackend, "(JLjava/util/List;Ljava/lang/String;)Lcom/miracl/mpinsdk/model/Status;"), + NATIVE_METHOD(nListBackends, "(JLjava/util/List;)Lcom/miracl/mpinsdk/model/Status;"), NATIVE_METHOD(nGetVersion, "(J)Ljava/lang/String;"), NATIVE_METHOD(nCanLogout, "(JLcom/miracl/mpinsdk/model/User;)Z"), NATIVE_METHOD(nLogout, "(JLcom/miracl/mpinsdk/model/User;)Z"),