Cloud ACE update
authorJongmin Choi <jminl.choi@samsung.com>
Thu, 20 Oct 2016 02:03:41 +0000 (11:03 +0900)
committerRandeep Singh <randeep.s@samsung.com>
Tue, 17 Jan 2017 04:04:02 +0000 (04:04 +0000)
- APIs added to update Cloud ACE using aclid and acid
- aceid input removed from device side update API

Patch #1: initial upload
Patch #2: update ACE fix
Patch #4: Issue fixed related to update ACE and individual ACE update.
          Also Acl modification
Patch #5: Rebased to latest 1.2-rel
Patch #7: isValidACE method added and other issue fix
Patch #8-9: delete logic fix, getAclACE added, unnecessary code deleted

Change-Id: I8b15fe4556536b4af4d597564ccab4cf66c55e44
Signed-off-by: Jongmin Choi <jminl.choi@samsung.com>
Signed-off-by: Sunil Kumar K R <sunil.k14@samsung.com>
Signed-off-by: Jongmin Choi <jminl.choi@samsung.com>
Signed-off-by: Sunil Kumar K R <sunil.k14@samsung.com>
Signed-off-by: Jongmin Choi <jminl.choi@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/13049
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Randeep Singh <randeep.s@samsung.com>
(cherry picked from commit 1a2e71f9c470c7cc17157f83deb4488ee83050a4)
Reviewed-on: https://gerrit.iotivity.org/gerrit/15279

resource/csdk/security/provisioning/sample/cloud/cloudWrapper.c
resource/csdk/security/provisioning/sample/cloud/cloudWrapper.h
resource/csdk/security/provisioning/src/cloud/aclid.c

index cb151b8..f044be7 100644 (file)
@@ -449,7 +449,6 @@ OCStackResult OCWrapperAclIndividualUpdateAce(const OCDevAddr *endPoint, OCCloud
         int stype = 0;
         int permission = 0;
 
-        readString(aceid, sizeof(aceid), "ace id", ACE_ID_EXAMPLE);
         do
         {
             readString(subjectuuid, sizeof(subjectuuid), "subjectuuid", SUBJECT_ID_EXAMPLE);
index 62ba04b..1df22cb 100644 (file)
@@ -95,6 +95,16 @@ OCStackResult OCWrapperAclIndividualGetInfo(const OCDevAddr *endPoint, OCCloudRe
 OCStackResult OCWrapperAclIndividualUpdateAce(const OCDevAddr *endPoint, OCCloudResponseCB callback);
 
 /**
+ * ACL individual update. Replaces an existing ACE with a new one
+ *
+ * @param[in] endPoint          cloud host and port
+ * @param[in] callback          result callback
+ * @return  OCStackResult application result
+ */
+
+OCStackResult OCWrapperAclIndividualUpdate(const OCDevAddr *endPoint, OCCloudResponseCB callback);
+
+/**
  * ACL individual delete
  *
  * @param[in] endPoint          cloud host and port
index 57ccef0..e2424db 100644 (file)
@@ -290,7 +290,6 @@ OCStackResult OCCloudAclIndividualUpdateAce(void* ctx,
             OIC_LOG(ERROR, TAG, "Can't convert subjectuuid to string");
         }
 
-        OCRepPayloadSetPropString(payload, OC_RSRVD_ACE_ID, ace->aceId);
         OCRepPayloadSetPropString(payload, OC_RSRVD_SUBJECT_UUID, (const char *)uuid);
         OCRepPayloadSetPropInt(payload, OC_RSRVD_SUBJECT_TYPE, ace->stype);
         OCRepPayloadSetPropInt(payload, OC_RSRVD_PERMISSION_MASK, ace->permission);
@@ -371,7 +370,7 @@ no_memory:
 OCStackResult OCCloudAclIndividualUpdate(void* ctx,
                                             const char *aclId,
                                             const char *aceId,
-                                            const cloudAce_t *ace,
+                                            const cloudAce_t *aces,
                                             const OCDevAddr *endPoint,
                                             OCCloudResponseCB callback)
 {
@@ -385,10 +384,11 @@ OCStackResult OCCloudAclIndividualUpdate(void* ctx,
 
     VERIFY_NON_NULL_RET(endPoint, TAG, "NULL endpoint", OC_STACK_INVALID_PARAM);
     VERIFY_NON_NULL_RET(aclId, TAG, "NULL input param", OC_STACK_INVALID_PARAM);
-    VERIFY_NON_NULL_RET(ace, TAG, "NULL input param", OC_STACK_INVALID_PARAM);
+    VERIFY_NON_NULL_RET(aces, TAG, "NULL input param", OC_STACK_INVALID_PARAM);
 
-    snprintf(uri, MAX_URI_LENGTH, "%s%s:%d%s/%s", DEFAULT_PREFIX,
-            endPoint->addr, endPoint->port, OC_RSRVD_ACL_ID_URL, aclId);
+    snprintf(uri, MAX_URI_LENGTH, "%s%s:%d%s/%s?%s=%s", DEFAULT_PREFIX,
+            endPoint->addr, endPoint->port, OC_RSRVD_ACL_ID_URL, aclId,
+            OC_RSRVD_ACE_ID, aceId);
 
     OCRepPayload *payload = OCRepPayloadCreate();
     if (!payload)
@@ -407,9 +407,9 @@ OCStackResult OCCloudAclIndividualUpdate(void* ctx,
     }
 
     i = 0;
-    cloudAce_t *tempAce = NULL;
+    cloudAce_t *ace = NULL;
 
-    LL_FOREACH((cloudAce_t*)ace, tempAce)
+    LL_FOREACH((cloudAce_t*)aces, ace)
     {
         OCRepPayload *payload = OCRepPayloadCreate();
         if (!payload)
@@ -420,22 +420,21 @@ OCStackResult OCCloudAclIndividualUpdate(void* ctx,
         helperPayload[i++] = payload;
 
         char *uuid = NULL;
-        if (OC_STACK_OK != ConvertUuidToStr(&tempAce->subjectuuid, &uuid))
+        if (OC_STACK_OK != ConvertUuidToStr(&ace->subjectuuid, &uuid))
         {
             OIC_LOG(ERROR, TAG, "Can't convert subjectuuid to string");
         }
 
-        OCRepPayloadSetPropString(payload, OC_RSRVD_ACE_ID, tempAce->aceId);
         OCRepPayloadSetPropString(payload, OC_RSRVD_SUBJECT_UUID, (const char *)uuid);
-        OCRepPayloadSetPropInt(payload, OC_RSRVD_SUBJECT_TYPE, tempAce->stype);
-        OCRepPayloadSetPropInt(payload, OC_RSRVD_PERMISSION_MASK, tempAce->permission);
+        OCRepPayloadSetPropInt(payload, OC_RSRVD_SUBJECT_TYPE, ace->stype);
+        OCRepPayloadSetPropInt(payload, OC_RSRVD_PERMISSION_MASK, ace->permission);
 
         OICFree(uuid);
 
         int reslist_count = 0;
         //code below duplicates LL_COUNT, implemented in newer version of utlist.h
         {
-            OicSecRsrc_t *res = tempAce->resources;
+            OicSecRsrc_t *res = ace->resources;
             while (res)
             {
                 res = res->next;
@@ -452,7 +451,7 @@ OCStackResult OCCloudAclIndividualUpdate(void* ctx,
         j = 0;
         OicSecRsrc_t *res = NULL;
 
-        LL_FOREACH(tempAce->resources, res)
+        LL_FOREACH(ace->resources, res)
         {
             OCRepPayload *payload = OCRepPayloadCreate();
             if (!payload)