From: Randeep Singh Date: Wed, 18 Jan 2017 09:50:56 +0000 (+0530) Subject: Adding Android Interface API saveACL() and doSelfOwnershiptransfer() X-Git-Tag: 1.3.0~684 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=886d3863e69d52e1e977929a6445feaa28cd6061;p=platform%2Fupstream%2Fiotivity.git Adding Android Interface API saveACL() and doSelfOwnershiptransfer() Change-Id: Ia19bb669d073868a1ca74b1e98968383256a62aa Signed-off-by: Sandeep Sharma Signed-off-by: Randeep Singh Reviewed-on: https://gerrit.iotivity.org/gerrit/15835 Tested-by: jenkins-iotivity Signed-off-by: Philippe Coval Reviewed-on: https://gerrit.iotivity.org/gerrit/16873 --- diff --git a/java/common/src/main/java/org/iotivity/base/OcProvisioning.java b/java/common/src/main/java/org/iotivity/base/OcProvisioning.java index 51890fa..f1a6946 100644 --- a/java/common/src/main/java/org/iotivity/base/OcProvisioning.java +++ b/java/common/src/main/java/org/iotivity/base/OcProvisioning.java @@ -222,7 +222,7 @@ public class OcProvisioning { private static native int saveTrustCertChain1(byte[] trustCertChain, int encodingType) throws OcException; - /** + /** * Method to save pin type. * * @param pinSize Byte Len of Random pin. @@ -240,4 +240,19 @@ public class OcProvisioning { return setPinType0(pinSize, pinTypeInt); } private static native int setPinType0(int pinSize, int pinType) throws OcException; + + /** + * API to save ACL, having multiple ACE's + * + *@param acl object + *@throws OcException + */ + public static native void saveACL(Object acl) throws OcException; + + /** + * API to do self ownership transfer. + * + *@throws OcException + */ + public static native void doSelfOwnershiptransfer() throws OcException; } diff --git a/java/jni/JniOcProvisioning.cpp b/java/jni/JniOcProvisioning.cpp index 94188c1..3fad9bf 100644 --- a/java/jni/JniOcProvisioning.cpp +++ b/java/jni/JniOcProvisioning.cpp @@ -23,6 +23,8 @@ #include "JniOcProvisioning.h" #include "JniPinCheckListener.h" #include "JniDisplayPinListener.h" +#include "oic_malloc.h" +#include "aclresource.h" #include "oxmverifycommon.h" #include "JniDisplayVerifyNumListener.h" #include "JniConfirmNumListener.h" @@ -508,3 +510,74 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_setDisplayPinListen return -1; #endif // __WITH_DTLS__ || __WITH_TLS__ } + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: saveACL + * Signature: (Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_saveACL + (JNIEnv *env , jclass thiz, jobject jacl) +{ + LOGD("OcProvisioning_saveACL"); + + if (!jacl) + { + ThrowOcException(OC_STACK_INVALID_PARAM, "acl can't be null"); + } + + OicSecAcl_t *acl = (OicSecAcl_t*)OICCalloc(1, sizeof(OicSecAcl_t)); + if (!acl) + { + ThrowOcException(OC_STACK_NO_MEMORY, "acl allocation failed"); + return; + } + + if (OC_STACK_OK != JniSecureUtils::convertJavaACLToOCAcl(env, jacl, acl)) + { + DeleteACLList(acl); + ThrowOcException(OC_STACK_INVALID_PARAM, "Failed to convert Java acl to OC acl"); + return ; + } + + try + { + OCStackResult result = OCSecure::saveACL(acl); + if (OC_STACK_OK != result) + { + ThrowOcException(result, "OCSecure::saveACL Failed"); + return; + } + } + catch (OCException& e) + { + LOGE("%s", e.reason().c_str()); + ThrowOcException(OC_STACK_ERROR, e.reason().c_str()); + } +} + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: doSelfOwnershiptransfer + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_doSelfOwnershiptransfer + (JNIEnv *env, jclass thiz) +{ + + LOGD("OcProvisioning_doSelfOwnershiptransfer"); + try + { + OCStackResult result = OCSecure::configSelfOwnership(); + if (OC_STACK_OK != result) + { + ThrowOcException(result, "OCSecure::configSelfOwnership Failed"); + return; + } + } + catch (OCException& e) + { + LOGE("%s", e.reason().c_str()); + ThrowOcException(OC_STACK_ERROR, e.reason().c_str()); + } +} diff --git a/java/jni/JniOcProvisioning.h b/java/jni/JniOcProvisioning.h index 541b4e0..702bc9e 100644 --- a/java/jni/JniOcProvisioning.h +++ b/java/jni/JniOcProvisioning.h @@ -141,6 +141,22 @@ JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_saveTrustCertChain1 */ JNIEXPORT jint JNICALL Java_org_iotivity_base_OcProvisioning_setPinType0 (JNIEnv *, jclass, jint, jint); + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: saveACL + * Signature: (Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_saveACL + (JNIEnv *, jclass, jobject); + +/* + * Class: org_iotivity_base_OcProvisioning + * Method: doSelfOwnershiptransfer + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_iotivity_base_OcProvisioning_doSelfOwnershiptransfer + (JNIEnv *, jclass); #ifdef __cplusplus } #endif