Update OTM condition check logic.
authorParkhi <h_w.park@samsung.com>
Thu, 2 Feb 2017 10:44:18 +0000 (19:44 +0900)
committerUze Choi <uzchoi@samsung.com>
Thu, 2 Feb 2017 12:23:05 +0000 (12:23 +0000)
 - we need to seperate OTM condition(i.e. Not synchronized with DB, enrollee is already owned by other mediator)

Change-Id: I20696908ff961f3c2ae2f18f9fec01cb6a60fc82
Signed-off-by: Parkhi <h_w.park@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/17013
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/easy-setup/mediator/richsdk/src/EnrolleeSecurity.cpp
service/easy-setup/mediator/richsdk/src/EnrolleeSecurity.h

index b806f47..038cdbd 100755 (executable)
@@ -559,23 +559,6 @@ namespace OIC
             return ownershipTransferData;
         }
 
-        bool EnrolleeSecurity::isTargetDeviceMine()
-        {
-            OIC_LOG(DEBUG, ENROLEE_SECURITY_TAG, "isTargetDeviceMine IN");
-#ifdef MULTIPLE_OWNER
-            if(isOwnedDeviceRegisteredInDB() &&
-                (isOwnerIDMatched(m_securedResource) ||
-                    isSubOwnerIDMatched(m_securedResource)))
-#else
-            if(isOwnedDeviceRegisteredInDB() &&
-                    isOwnerIDMatched(m_securedResource))
-#endif
-            {
-                return true;
-            }
-            return false;
-        }
-
         ESResult EnrolleeSecurity::syncUpWithMediatorDB()
         {
             OIC_LOG(DEBUG, ENROLEE_SECURITY_TAG, "syncUpWithMediatorDB IN");
@@ -677,7 +660,15 @@ namespace OIC
 
                 if(m_securedResource->getOwnedStatus())
                 {
-                    if(isTargetDeviceMine())
+#ifdef MULTIPLE_OWNER
+                    if(isOwnedDeviceRegisteredInDB() &&
+                        (isOwnerIDMatched(m_securedResource) ||
+                            isSubOwnerIDMatched(m_securedResource)))
+#else
+                    if(isOwnedDeviceRegisteredInDB() &&
+                            isOwnerIDMatched(m_securedResource))
+#endif
+
                     {
                         OIC_LOG(DEBUG, ENROLEE_SECURITY_TAG,
                             "The found device is already owned by Mediator.(SUCCESS)");
@@ -686,6 +677,8 @@ namespace OIC
                     }
 #ifdef MULTIPLE_OWNER
                     else if( !isOwnedDeviceRegisteredInDB() &&
+                             !isOwnerIDMatched(m_securedResource) &&
+                             !isSubOwnerIDMatched(m_securedResource) &&
                              m_securedResource->isMOTSupported() &&
                              m_securedResource->isMOTEnabled() &&
                              OIC_PRECONFIG_PIN == ownershipTransferData.getMOTMethod() &&
@@ -701,12 +694,23 @@ namespace OIC
                             return res;
                         }
                     }
+                    else if( !isOwnedDeviceRegisteredInDB() &&
+                             (isOwnerIDMatched(m_securedResource) ||
+                             isSubOwnerIDMatched(m_securedResource)))
+#else
+                    else if( !isOwnedDeviceRegisteredInDB() && isOwnerIDMatched(m_securedResource))
 #endif
+                    {
+                        OIC_LOG(ERROR, ENROLEE_SECURITY_TAG,
+                        "An ownership transfer knowledge is not synchronized between mediator and found enrollee.(FAILED)");
+                        res = ESResult::ES_OWNERSHIP_IS_NOT_SYNCHRONIZED;
+                        return res;
+                    }
                     else
                     {
                         OIC_LOG(ERROR, ENROLEE_SECURITY_TAG,
                             "The found device is already owned by Other Mediator.(FAILED)");
-                        res = ESResult::ES_OWNERSHIP_IS_NOT_SYNCHRONIZED;
+                        res = ESResult::ES_OWNERSHIP_TRANSFER_FAILURE;
                         return res;
                     }
                 }
index 16bac3a..5ceaa9b 100755 (executable)
@@ -85,7 +85,6 @@ namespace OIC
             ESResult discoverTargetSecureResource();
             ESOwnershipTransferData getOwnershipTransferDataFromUser
                                         (SecurityProvStatusCbWithOption callback);
-            bool isTargetDeviceMine();
             ESResult syncUpWithMediatorDB();
 #ifdef MULTIPLE_OWNER
             ESResult performMultipleOwnershipTransfer(const ESOwnershipTransferData& MOTdata);