From e2801e75672f0d00dfbca55be3be4081e1939e0d Mon Sep 17 00:00:00 2001 From: Sandeep Sharma Date: Fri, 2 Dec 2016 17:30:37 +0530 Subject: [PATCH] Adding Android Api for Mutual Verified Just-Works patch #4 Add support for Mutual verified JW OTM in android PT. patch #5 Fix names as per C++ Change-Id: I6be03b4af14645808171d25e92b78ef0382c2e7a Signed-off-by: Sandeep Sharma Signed-off-by: Sunil Kumar K R Signed-off-by: Sandeep Sharma Reviewed-on: https://gerrit.iotivity.org/gerrit/14843 Tested-by: jenkins-iotivity Reviewed-by: Randeep Singh Reviewed-on: https://gerrit.iotivity.org/gerrit/15235 --- android/android_api/base/jni/Android.mk | 4 +- .../android_api/base/jni/JniConfirmNumListener.cpp | 76 ++++++++++ .../android_api/base/jni/JniConfirmNumListener.h | 40 +++++ .../base/jni/JniDisplayVerifyNumListener.cpp | 99 ++++++++++++ .../base/jni/JniDisplayVerifyNumListener.h | 40 +++++ android/android_api/base/jni/JniOcProvisioning.cpp | 167 +++++++++++++++++++++ android/android_api/base/jni/JniOcProvisioning.h | 41 +++++ .../org/iotivity/base/MVJustWorksOptionMask.java | 64 ++++++++ .../java/org/iotivity/base/OcProvisioning.java | 63 ++++++++ .../src/main/AndroidManifest.xml | 3 +- .../src/main/assets/oic_svr_db_client.dat | Bin 859 -> 859 bytes .../provisioningclient/ProvisioningClient.java | 144 +++++++++++++++++- .../main/res/menu/menu_secure_provision_client.xml | 8 +- 13 files changed, 736 insertions(+), 13 deletions(-) create mode 100644 android/android_api/base/jni/JniConfirmNumListener.cpp create mode 100644 android/android_api/base/jni/JniConfirmNumListener.h create mode 100644 android/android_api/base/jni/JniDisplayVerifyNumListener.cpp create mode 100644 android/android_api/base/jni/JniDisplayVerifyNumListener.h create mode 100644 android/android_api/base/src/main/java/org/iotivity/base/MVJustWorksOptionMask.java diff --git a/android/android_api/base/jni/Android.mk b/android/android_api/base/jni/Android.mk index d2543b5..531cb0c 100644 --- a/android/android_api/base/jni/Android.mk +++ b/android/android_api/base/jni/Android.mk @@ -131,7 +131,9 @@ ifeq ($(SECURED), 1) JniSecureUtils.cpp \ JniProvisionResultListner.cpp \ JniPinCheckListener.cpp \ - JniDisplayPinListener.cpp + JniDisplayPinListener.cpp \ + JniDisplayVerifyNumListener.cpp \ + JniConfirmNumListener.cpp endif ifeq ($(WITH_CLOUD), 1) diff --git a/android/android_api/base/jni/JniConfirmNumListener.cpp b/android/android_api/base/jni/JniConfirmNumListener.cpp new file mode 100644 index 0000000..402f3e1 --- /dev/null +++ b/android/android_api/base/jni/JniConfirmNumListener.cpp @@ -0,0 +1,76 @@ +/* +* //****************************************************************** +* // +* // Copyright 2016 Samsung Electronics All Rights Reserved. +* // +* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +* // +* // Licensed under the Apache License, Version 2.0 (the "License"); +* // you may not use this file except in compliance with the License. +* // You may obtain a copy of the License at +* // +* // http://www.apache.org/licenses/LICENSE-2.0 +* // +* // Unless required by applicable law or agreed to in writing, software +* // distributed under the License is distributed on an "AS IS" BASIS, +* // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* // See the License for the specific language governing permissions and +* // limitations under the License. +* // +* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +*/ +#include "JniConfirmNumListener.h" + +JniConfirmNumListener::JniConfirmNumListener(JNIEnv *env, jobject jListener) +{ + m_jgListener = env->NewGlobalRef(jListener); +} + +JniConfirmNumListener::~JniConfirmNumListener() +{ + LOGI("~JniConfirmNumListener()"); + if (m_jgListener) + { + jint ret = JNI_ERR; + JNIEnv *env = GetJNIEnv(ret); + if (NULL == env) return; + env->DeleteGlobalRef(m_jgListener); + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + } +} + +OCStackResult JniConfirmNumListener::confirmMutualVerifNumCallback() +{ + jint ret = JNI_ERR; + JNIEnv *env = GetJNIEnv(ret); + if (NULL == env) + { + return OC_STACK_ERROR; + } + + jclass clsL = env->GetObjectClass(m_jgListener); + + if (!clsL) + { + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + return OC_STACK_ERROR; + } + + jmethodID midL = env->GetMethodID(clsL, "confirmNumListener", "()I"); + if (!midL) + { + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + return OC_STACK_ERROR; + } + + OCStackResult result = (OCStackResult) env->CallIntMethod(m_jgListener, midL); + + if (env->ExceptionCheck()) + { + LOGE("Java exception is thrown"); + env->ExceptionClear(); + } + + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + return result; +} diff --git a/android/android_api/base/jni/JniConfirmNumListener.h b/android/android_api/base/jni/JniConfirmNumListener.h new file mode 100644 index 0000000..13b30ec --- /dev/null +++ b/android/android_api/base/jni/JniConfirmNumListener.h @@ -0,0 +1,40 @@ +/* +* //****************************************************************** +* // +* // Copyright 2016 Samsung Electronics All Rights Reserved. +* // +* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +* // +* // Licensed under the Apache License, Version 2.0 (the "License"); +* // you may not use this file except in compliance with the License. +* // You may obtain a copy of the License at +* // +* // http://www.apache.org/licenses/LICENSE-2.0 +* // +* // Unless required by applicable law or agreed to in writing, software +* // distributed under the License is distributed on an "AS IS" BASIS, +* // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* // See the License for the specific language governing permissions and +* // limitations under the License. +* // +* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +*/ +#include +#include "JniOcStack.h" +#include "OCProvisioningManager.hpp" + +#ifndef _Included_org_iotivity_base_JniConfirmNumListener +#define _Included_org_iotivity_base_JniConfirmNumListener + +class JniConfirmNumListener +{ + public: + JniConfirmNumListener(JNIEnv *env, jobject jListener); + ~JniConfirmNumListener(); + + OCStackResult confirmMutualVerifNumCallback(); + + private: + jobject m_jgListener; +}; +#endif diff --git a/android/android_api/base/jni/JniDisplayVerifyNumListener.cpp b/android/android_api/base/jni/JniDisplayVerifyNumListener.cpp new file mode 100644 index 0000000..20112d9 --- /dev/null +++ b/android/android_api/base/jni/JniDisplayVerifyNumListener.cpp @@ -0,0 +1,99 @@ +/* +* //****************************************************************** +* // +* // Copyright 2016 Samsung Electronics All Rights Reserved. +* // +* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +* // +* // Licensed under the Apache License, Version 2.0 (the "License"); +* // you may not use this file except in compliance with the License. +* // You may obtain a copy of the License at +* // +* // http://www.apache.org/licenses/LICENSE-2.0 +* // +* // Unless required by applicable law or agreed to in writing, software +* // distributed under the License is distributed on an "AS IS" BASIS, +* // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* // See the License for the specific language governing permissions and +* // limitations under the License. +* // +* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +*/ +#include "JniDisplayVerifyNumListener.h" +#include "oic_malloc.h" + +JniDisplayVerifyNumListener::JniDisplayVerifyNumListener(JNIEnv *env, jobject jListener) +{ + m_jgListener = env->NewGlobalRef(jListener); +} + +JniDisplayVerifyNumListener::~JniDisplayVerifyNumListener() +{ + LOGI("~JniDisplayVerifyNumListener()"); + if (m_jgListener) + { + jint ret = JNI_ERR; + JNIEnv *env = GetJNIEnv(ret); + if (NULL == env) return; + env->DeleteGlobalRef(m_jgListener); + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + } +} + +OCStackResult JniDisplayVerifyNumListener::displayMutualVerifNumCallback(uint8_t verifNum[3]) +{ + jint ret = JNI_ERR; + JNIEnv *env = GetJNIEnv(ret); + char *byteArray; + + if (NULL == env) + { + return OC_STACK_ERROR; + } + + jclass clsL = env->GetObjectClass(m_jgListener); + + if (!clsL) + { + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + return OC_STACK_ERROR; + } + + jmethodID midL = env->GetMethodID(clsL, "displayNumListener", "(Ljava/lang/String;)I"); + if (!midL) + { + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + return OC_STACK_ERROR; + } + + byteArray = (char*)OICCalloc(20, sizeof(char)); + + if (NULL == byteArray) + { + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + return OC_STACK_NO_MEMORY; + } + + sprintf(byteArray, "%02X%02X%02X", verifNum[0], verifNum[1], verifNum[2]); + + jstring jStr = env->NewStringUTF(byteArray); + if (!jStr) + { + if (JNI_EDETACHED == ret) + { + g_jvm->DetachCurrentThread(); + } + return OC_STACK_ERROR; + } + OCStackResult result = (OCStackResult)env->CallIntMethod(m_jgListener, midL, jStr); + + if (env->ExceptionCheck()) + { + LOGE("Java exception is thrown"); + env->ExceptionClear(); + } + + if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + free(byteArray); + return result; +} diff --git a/android/android_api/base/jni/JniDisplayVerifyNumListener.h b/android/android_api/base/jni/JniDisplayVerifyNumListener.h new file mode 100644 index 0000000..ed06859 --- /dev/null +++ b/android/android_api/base/jni/JniDisplayVerifyNumListener.h @@ -0,0 +1,40 @@ +/* +* //****************************************************************** +* // +* // Copyright 2016 Samsung Electronics All Rights Reserved. +* // +* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +* // +* // Licensed under the Apache License, Version 2.0 (the "License"); +* // you may not use this file except in compliance with the License. +* // You may obtain a copy of the License at +* // +* // http://www.apache.org/licenses/LICENSE-2.0 +* // +* // Unless required by applicable law or agreed to in writing, software +* // distributed under the License is distributed on an "AS IS" BASIS, +* // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* // See the License for the specific language governing permissions and +* // limitations under the License. +* // +* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +*/ +#include +#include "JniOcStack.h" +#include "OCProvisioningManager.hpp" + +#ifndef _Included_org_iotivity_base_JniDisplayVerifyNumListener +#define _Included_org_iotivity_base_JniDisplayVerifyNumListener + +class JniDisplayVerifyNumListener +{ + public: + JniDisplayVerifyNumListener(JNIEnv *env, jobject jListener); + ~JniDisplayVerifyNumListener(); + + OCStackResult displayMutualVerifNumCallback(uint8_t verfNum[3]); + + private: + jobject m_jgListener; +}; +#endif diff --git a/android/android_api/base/jni/JniOcProvisioning.cpp b/android/android_api/base/jni/JniOcProvisioning.cpp index 0bacfbd..42387ab 100644 --- a/android/android_api/base/jni/JniOcProvisioning.cpp +++ b/android/android_api/base/jni/JniOcProvisioning.cpp @@ -23,12 +23,17 @@ #include "JniOcProvisioning.h" #include "JniPinCheckListener.h" #include "JniDisplayPinListener.h" +#include "oxmverifycommon.h" +#include "JniDisplayVerifyNumListener.h" +#include "JniConfirmNumListener.h" using namespace OC; namespace PH = std::placeholders; static JniPinCheckListener *jniPinListener = nullptr; static JniDisplayPinListener *jniDisplayPinListener = nullptr; +static JniDisplayVerifyNumListener *jniDisplayMutualVerifyNumListener = nullptr; +static JniConfirmNumListener *jniConfirmMutualVerifyNumListener = nullptr; void Callback(char *buf, size_t size) { @@ -54,6 +59,38 @@ void displayPinCB(char *pinBuf, size_t pinSize) } } +OCStackResult displayMutualVerifNumCB(uint8_t *verifyNum) +{ + OCStackResult res; + + if (jniDisplayMutualVerifyNumListener) + { + res = jniDisplayMutualVerifyNumListener->displayMutualVerifNumCallback(verifyNum); + } + else + { + res = OC_STACK_ERROR; + LOGE("DisplayMutualVerifyNumListener is null"); + } + return res; +} + +OCStackResult confirmMutualVerifNumCB() +{ + OCStackResult res; + + if (jniConfirmMutualVerifyNumListener) + { + res = jniConfirmMutualVerifyNumListener->confirmMutualVerifNumCallback(); + } + else + { + res = OC_STACK_ERROR; + LOGE("ConfirmMutualVerifyNumListener is null"); + } + return res; +} + /* * Class: org_iotivity_base_OcProvisioning * Method: ownershipTransferCDdata @@ -246,6 +283,136 @@ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_getDeviceSt /* * Class: org_iotivity_base_OcProvisioning + * Method: setDisplayNumListener + * Signature: (Lorg/iotivity/base/OcProvisioning/DisplayNumListener;)V + */ +JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setDisplayNumListener + (JNIEnv *env, jclass clazz, jobject jListener) +{ + LOGI("OcProvisioning_setDisplayNumListener"); + + if (!jListener) + { + ThrowOcException(OC_STACK_INVALID_CALLBACK, "Listner can't be null"); + return; + } + delete jniDisplayMutualVerifyNumListener; + jniDisplayMutualVerifyNumListener = new JniDisplayVerifyNumListener(env, jListener); + + try + { + OCStackResult result = OCSecure::registerDisplayNumCallback(displayMutualVerifNumCB); + if (OC_STACK_OK != result) + { + ThrowOcException(result, "Failed to set Listner"); + return; + } + } + catch (OCException& e) + { + LOGE("%s", e.reason().c_str()); + ThrowOcException(OC_STACK_ERROR, e.reason().c_str()); + return; + } +} + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: unsetDisplayNumListener + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_unsetDisplayNumListener + (JNIEnv * env, jclass clazz) +{ + LOGI("OcProvisioning_unsetDisplayNumListener"); + + OCStackResult result = OCSecure::deregisterDisplayNumCallback(); + + if (OC_STACK_OK != result) + { + ThrowOcException(OC_STACK_INVALID_CALLBACK, "Failed to unset Listener"); + } + + return result; +} + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: setConfirmNumListener + * Signature: (Lorg/iotivity/base/OcProvisioning/ConfirmNumListener;)V + */ +JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setConfirmNumListener + (JNIEnv *env, jclass clazz, jobject jListener) +{ + LOGI("OcProvisioning_setConfirmNumListener"); + + if (!jListener) + { + ThrowOcException(OC_STACK_INVALID_CALLBACK, "Listner can't be null"); + return; + } + delete jniConfirmMutualVerifyNumListener; + jniConfirmMutualVerifyNumListener = new JniConfirmNumListener(env, jListener); + + try + { + OCStackResult result = OCSecure::registerUserConfirmCallback(confirmMutualVerifNumCB); + if (OC_STACK_OK != result) + { + ThrowOcException(result, "Failed to set Listner"); + return; + } + } + catch (OCException& e) + { + LOGE("%s", e.reason().c_str()); + ThrowOcException(OC_STACK_ERROR, e.reason().c_str()); + return; + } +} + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: unsetConfirmNumListener + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_unsetConfirmNumListener + (JNIEnv *env, jclass clazz) +{ + LOGI("OcProvisioning_unsetConfirmNumListener"); + + OCStackResult result = OCSecure::deregisterUserConfirmCallback(); + + if (OC_STACK_OK != result) + { + ThrowOcException(OC_STACK_INVALID_CALLBACK, "Failed to unser Listener"); + } + + return result; +} +/* + * Class: org_iotivity_base_OcProvisioning + * Method: setMVJustWorksOptions0 + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_setMVJustWorksOptions0 + (JNIEnv *env, jclass clazz, jint options) +{ + LOGI("OcProvisioning_setMVJustWorksOptions0"); + + OCStackResult result = OCSecure::setVerifyOptionMask((VerifyOptionBitmask_t)options); + + if (OC_STACK_OK != result) + { + ThrowOcException(OC_STACK_INVALID_CALLBACK, "setMVJustWorksOptions Failed"); + } + + return result; +} + + +/* + * Class: org_iotivity_base_OcProvisioning * Method: setDisplayPinListener * Signature: (Lorg/iotivity/base/OcProvisioning/DisplayPinListener;)V */ diff --git a/android/android_api/base/jni/JniOcProvisioning.h b/android/android_api/base/jni/JniOcProvisioning.h index 290744e..bad4a8d 100644 --- a/android/android_api/base/jni/JniOcProvisioning.h +++ b/android/android_api/base/jni/JniOcProvisioning.h @@ -80,11 +80,52 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setDisplayPinListen /* * Class: org_iotivity_base_OcProvisioning + * Method: setDisplayNumListener + * Signature: (Lorg/iotivity/base/OcProvisioning/DisplayNumListener;)V + */ +JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setDisplayNumListener + (JNIEnv *, jclass, jobject); + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: unsetDisplayNumListener + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_unsetDisplayNumListener + (JNIEnv *, jclass); + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: setConfirmNumListener + * Signature: (Lorg/iotivity/base/OcProvisioning/ConfirmNumListener;)V + */ +JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setConfirmNumListener + (JNIEnv *, jclass, jobject); + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: unsetConfirmNumListener + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_unsetConfirmNumListener + (JNIEnv *, jclass); + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: setMVJustWorksOptions0 + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_setMVJustWorksOptions0 + (JNIEnv *, jclass, jint); + +/* + * Class: org_iotivity_base_OcProvisioning * Method: getDevicestatusLists * Signature: (I)[Lorg/iotivity/base/OcSecureResource; */ JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcProvisioning_getDeviceStatusList1 (JNIEnv *, jclass, jint); + /* * Class: org_iotivity_base_OcProvisioning * Method: saveTrustCertChain1 diff --git a/android/android_api/base/src/main/java/org/iotivity/base/MVJustWorksOptionMask.java b/android/android_api/base/src/main/java/org/iotivity/base/MVJustWorksOptionMask.java new file mode 100644 index 0000000..7e111ca --- /dev/null +++ b/android/android_api/base/src/main/java/org/iotivity/base/MVJustWorksOptionMask.java @@ -0,0 +1,64 @@ +/* + ******************************************************************* + * + * Copyright 2016 Samsung Electronics All Rights Reserved. + * + *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + */ + +package org.iotivity.base; + +import java.security.InvalidParameterException; +import java.util.EnumSet; + +public enum MVJustWorksOptionMask { + NOT_APPLICABLE (0x0), + DISPLAY_MUTUAL_VERIF_NUM (0x1 << 0), + CONFIRM_MUTUAL_VERIF_NUM (0x1 << 1), + ; + + private int value; + + private MVJustWorksOptionMask(int value) { + this.value = value; + } + + public int getValue() { + return this.value; + } + + public static EnumSet convertToEnumSet(int value) { + EnumSet typeSet = null; + + for (MVJustWorksOptionMask v : values()) { + if (0 != (value & v.getValue())) { + if (null == typeSet) { + typeSet = EnumSet.of(v); + } else { + typeSet.add(v); + } + } + } + + if (null == typeSet || typeSet.isEmpty()) { + throw new InvalidParameterException("Unexpected MVJustWorksOptionMask value:" + value); + } + + return typeSet; + } + +} diff --git a/android/android_api/base/src/main/java/org/iotivity/base/OcProvisioning.java b/android/android_api/base/src/main/java/org/iotivity/base/OcProvisioning.java index 8cb282b..2130b36 100644 --- a/android/android_api/base/src/main/java/org/iotivity/base/OcProvisioning.java +++ b/android/android_api/base/src/main/java/org/iotivity/base/OcProvisioning.java @@ -25,6 +25,7 @@ package org.iotivity.base; import java.util.List; import java.util.Arrays; import java.util.Map; +import java.util.EnumSet; /** * OcProvisionig represents functions corresponding to the provisioing of @@ -101,6 +102,68 @@ public class OcProvisioning { } /** + * API to Set callback for displaying verifNum in verified Just-Works. + * + *@param DisplayNumListener callback Listener to be registered for + displaying VerifyNUm. + *@throws OcException + */ + public static native void setDisplayNumListener( + DisplayNumListener displayNumListener) throws OcException; + + public static interface DisplayNumListener { + public int displayNumListener(String verifyNum); + } + + /** + * API to unregister DisplayNumListener Listener + * + *@return 0 on success, 1 on failure + *@throws OcException + */ + public static native int unsetDisplayNumListener() throws OcException; + + /** + * API to Set callback for getting user confirmation in verified + * Just-Works + * + *@param ConfirmNumListener callback Listener to be registered for getting user confirmation. + *@throws OcException + */ + public static native void setConfirmNumListener(ConfirmNumListener + confirmNumListener) throws OcException; + + public static interface ConfirmNumListener { + public int confirmNumListener(); + } + + /** + * API to unregister ConfirmMutualVerifyNum Listener + * + *@return 0 on success, 1 on failure + *@throws OcException + */ + public static native int unsetConfirmNumListener() throws OcException; + + /** + * API to set options for Mutual Verified Just-works + * Default is for both screen PIN display and get user confirmation. + * + */ + public static int setMVJustWorksOptions(EnumSet optionMask) throws OcException { + + int optionMaskInt = 0; + + for (MVJustWorksOptionMask ops : MVJustWorksOptionMask.values()) { + if (optionMask.contains(ops)) + optionMaskInt |= ops.getValue(); + } + return setMVJustWorksOptions0(optionMaskInt); + } + + private static native int setMVJustWorksOptions0(int optionsMask) throws OcException; + + /** * Method to get Array of owned and un-owned devices in the current subnet. * * @param timeout timeout in sec for the API to return. diff --git a/android/examples/provisioningclient/src/main/AndroidManifest.xml b/android/examples/provisioningclient/src/main/AndroidManifest.xml index 93a375b..1ab6976 100644 --- a/android/examples/provisioningclient/src/main/AndroidManifest.xml +++ b/android/examples/provisioningclient/src/main/AndroidManifest.xml @@ -1,7 +1,8 @@ - + + - + xmlns:tools="http://schemas.android.com/tools" tools:context=".ProvisioningClient"> + -- 2.7.4