Added eownerid before ACL provisioning. 74/186474/1
authorsaerome.kim <saerome.kim@samsung.com>
Fri, 10 Aug 2018 00:58:31 +0000 (09:58 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Fri, 10 Aug 2018 00:58:31 +0000 (09:58 +0900)
Before ACL provisioning, eownerid is needed.
Without eownerid, ACL provisioning always fails.

Change-Id: I4abcaa576de62e5b55e48f8cf6d3d2a58018b814
Signed-off-by: saerome.kim <saerome.kim@samsung.com>
src/mot-agent/ma-subowner.c [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 239ee2f..f7ae774
@@ -825,8 +825,8 @@ static int _mot(ma_service *service, gchar *uuid_str, gchar *pin)
        return MA_ERROR_NONE;
 }
 
-static OicSecAcl_t* _create_target_acl(const OicUuid_t* target, const OicUuid_t* subject,
-       const char *rsrc_uri, const char *rsrc_type, const char *rsrc_interface, int permission)
+static OicSecAcl_t* _create_target_acl(const OicUuid_t* subject, const char *rsrc_uri,
+       const char *rsrc_type, const char *rsrc_interface, int permission)
 {
        /* For example
          * subejct = "12341234-1234-1234-12341234"
@@ -835,16 +835,20 @@ static OicSecAcl_t* _create_target_acl(const OicUuid_t* target, const OicUuid_t*
          * rsrc_interface = "oic.if.baseline"
          * rsrc_permission = MA_PERMISSION_FULL
          */
+
        size_t len;
+       OicUuid_t eowner;
+       OCStackResult ret;
        OicSecAcl_t* acl = NULL;
        OicSecAce_t* ace = NULL;
        OicSecRsrc_t* rsrc = NULL;
 
-       ma_check_null_ret_error(target, "target", NULL);
        ma_check_null_ret_error(subject, "subject", NULL);
+       ma_check_null_ret_error(rsrc_uri, "rsrc_uri", NULL);
+       ma_check_null_ret_error(rsrc_type, "rsrc_type", NULL);
+       ma_check_null_ret_error(rsrc_interface, "rsrc_interface", NULL);
 
 #ifdef DEBUG_UUID
-       MA_LOGD("target = %s", ma_get_readable_uuid(target));
        MA_LOGD("subject = %s", ma_get_readable_uuid(subject));
        MA_LOGD("rsrc_uri = %s", rsrc_uri);
        MA_LOGD("rsrc_type = %s", rsrc_type);
@@ -915,7 +919,12 @@ static OicSecAcl_t* _create_target_acl(const OicUuid_t* target, const OicUuid_t*
                MA_LOGE("ace->eownerID : calloc failed = %d", errno);
                goto CREATE_ACL_ERROR;
        }
-       memcpy(ace->eownerID->id, subject->id, sizeof(subject->id));
+       ret = GetDoxmDevOwnerId(&eowner);
+       if (OC_STACK_OK != ret) {
+               MA_LOGE("GeDoxmDevOwner failed = %d", ret);
+               goto CREATE_ACL_ERROR;
+       }
+       memcpy(ace->eownerID->id, eowner.id, sizeof(subject->id));
 
        return acl;
 
@@ -973,8 +982,7 @@ static void _acl_provisioning_func(ma_req_cb_s *con)
        g_client->g_doneCB = false;
        MA_LOGI(" Provisioning Selected ACL..");
 
-       acl = _create_target_acl(&target_dev->doxm->deviceID,
-               &subject_dev->doxm->deviceID, con->rsrc_uri, con->rsrc_type,
+       acl = _create_target_acl(&subject_dev->doxm->deviceID, con->rsrc_uri, con->rsrc_type,
                con->rsrc_interface, con->permission);
        if (NULL == acl) {
                MA_LOGE("Failed to create ACL for %s", con->rsrc_uri);
@@ -1043,9 +1051,9 @@ static void _cred_provisioning_cb(void* ctx, int nOfRes, OCProvisionResult_t* ar
        ma_subowner_s *client = (ma_subowner_s *)ctx;
 
        if (!has_error)  {
-               MA_LOGD("Provision ACL SUCCEEDED");
+               MA_LOGD("Provision CRED SUCCEEDED");
        } else {
-               MA_LOGD("Provision ACL FAILED ");
+               MA_LOGD("Provision CRED FAILED ");
                ma_print_result_list((const OCProvisionResult_t*) arr, nOfRes);
        }
        client->g_doneCB = true;
@@ -1107,7 +1115,7 @@ static void _cred_provisioning_func(ma_req_cb_s *con)
                SYMMETRIC_PAIR_WISE_KEY, OWNER_PSK_LENGTH_256,
                dev1, dev2, _cred_provisioning_cb);
        if (OC_STACK_OK != ret)  {
-               MA_LOGD("OCProvisionPairwiseDevices API error: %d (%s)",
+               MA_LOGD("OCProvisionCredentials API error: %d (%s)",
                        ret, ma_ocf_error_to_string(ret));
                goto PV_CRED_END;
        }
@@ -1245,19 +1253,15 @@ static void _resources_pairwise_func(ma_req_cb_s *con)
        g_client->g_doneCB = false;
        MA_LOGI(" Provisioning Selected Pairwise..");
 
-       acl_1 = _create_target_acl(&target_dev_1->doxm->deviceID,
-                                                          &subject_dev_1->doxm->deviceID, con->rsrc_uri_1,
-                                                          con->rsrc_type_1,
-                                                          con->rsrc_interface_1, con->permission_1);
+       acl_1 = _create_target_acl(&subject_dev_1->doxm->deviceID, con->rsrc_uri_1,
+               con->rsrc_type_1, con->rsrc_interface_1, con->permission_1);
        if (NULL == acl_1) {
                MA_LOGE("Failed to create ACL for %s", con->rsrc_uri);
                goto PVPAIRWIE_ERROR;
        }
 
-       acl_2 = _create_target_acl(&target_dev_2->doxm->deviceID,
-                                                          &subject_dev_2->doxm->deviceID, con->rsrc_uri_2,
-                                                          con->rsrc_type_2,
-                                                          con->rsrc_interface_2, con->permission_2);
+       acl_2 = _create_target_acl(&subject_dev_2->doxm->deviceID, con->rsrc_uri_2,
+               con->rsrc_type_2, con->rsrc_interface_2, con->permission_2);
        if (NULL == acl_2) {
                MA_LOGE("Failed to create ACL for %s", con->rsrc_uri);
                goto PVPAIRWIE_ERROR;
@@ -1265,8 +1269,8 @@ static void _resources_pairwise_func(ma_req_cb_s *con)
 
        /* Do both resources pairwise */
        ret = OCProvisionPairwiseDevices((void*) g_client, SYMMETRIC_PAIR_WISE_KEY,
-                                                        OWNER_PSK_LENGTH_256, target_dev_1, acl_1,
-                                                        target_dev_2, acl_2, _resources_pairwise_cb);
+                OWNER_PSK_LENGTH_256, target_dev_1, acl_1, target_dev_2, acl_2,
+                _resources_pairwise_cb);
        if (OC_STACK_OK != ret) {
                MA_LOGD("OCProvisionPairwiseDevices API error: %d (%s)", ret,
                                   ma_ocf_error_to_string(ret));
@@ -1747,25 +1751,21 @@ static void _make_devices_pair_func(ma_req_cb_s *con)
                goto PV_PAIR_END;
        }
 
-       MA_LOGI("Registered Discovered Devices");
+       MA_LOGI("MOT Done");
 
        g_client->g_doneCB = false;
 
        MA_LOGI(" Provisioning Selected Pairwise..");
 
-       acl_1 = _create_target_acl(&target_dev_1->doxm->deviceID,
-                                                          &subject_dev_1->doxm->deviceID, con->rsrc_uri_1,
-                                                          con->rsrc_type_1,
-                                                          con->rsrc_interface_1, con->permission_1);
+       acl_1 = _create_target_acl(&subject_dev_1->doxm->deviceID, con->rsrc_uri_1,
+               con->rsrc_type_1, con->rsrc_interface_1, con->permission_1);
        if (NULL == acl_1) {
                MA_LOGE("Failed to create ACL for %s", con->rsrc_uri);
                goto PV_PAIR_END;
        }
 
-       acl_2 = _create_target_acl(&target_dev_2->doxm->deviceID,
-                                                          &subject_dev_2->doxm->deviceID, con->rsrc_uri_2,
-                                                          con->rsrc_type_2,
-                                                          con->rsrc_interface_2, con->permission_2);
+       acl_2 = _create_target_acl(&subject_dev_2->doxm->deviceID, con->rsrc_uri_2,
+               con->rsrc_type_2, con->rsrc_interface_2, con->permission_2);
        if (NULL == acl_2) {
                MA_LOGE("Failed to create ACL for %s", con->rsrc_uri);
                goto PV_PAIR_END;
@@ -1901,6 +1901,11 @@ static void _make_devices_unpair_func(ma_req_cb_s *con)
 
        g_client->g_doneCB = false;
 
+#ifdef DEBUG_UUID
+       MA_LOGD("owner_dev = %s", ma_get_readable_uuid(owner_uuid));
+       MA_LOGD("owned_dev = %s", ma_get_readable_uuid(owned_uuid));
+#endif
+
        MA_LOGI("Unlink Selected Pairwise Devices..");
        g_mutex_lock(&g_client->iotivity_mutex);
        ret = OCUnlinkDevices((void*) g_client, owner_dev, owned_dev, _unlink_resources_cb);