[IOT-3150] Set doxm.owned as read-only 80/27780/3
authorAleksey Volkov <a.volkov@samsung.com>
Wed, 19 Dec 2018 16:19:43 +0000 (18:19 +0200)
committerAleksey Volkov <a.volkov@samsung.com>
Wed, 9 Jan 2019 16:54:20 +0000 (18:54 +0200)
BZ 2692 - "owned" of "/oic/sec/doxm"
should be set by Device itself

- Set access mode to Read-Only
- Set value to TRUE, when the device switches to RFPRO, RFNOP
- Set value to FALSE, when the device switches to RESET, RFOTM

Change-Id: I0dd9112150fb2f20e4bdda90d56c9352ccdac0d8
Signed-off-by: Aleksey Volkov <a.volkov@samsung.com>
resource/csdk/security/src/deviceonboardingstate.c
resource/csdk/security/src/doxmresource.c

index b2f6887..c867ed9 100644 (file)
@@ -173,9 +173,6 @@ static bool IsReadyToEnterRFPRO(void)
 
     // Note: pstat.dos.p asserted by DoStateChange(), so not checked here.
 
-    // Verify doxm.owned == TRUE.
-    VERIFY_TRUE_OR_EXIT(TAG, IsDoxmOwned(), WARNING);
-
     // Verify doxm.devowneruuid != nil UUID.
     VERIFY_TRUE_OR_EXIT(TAG, !IsDoxmDevowneruuidTheNilUuid(), WARNING);
 
@@ -311,8 +308,16 @@ static bool EnterRFNOP(void)
     // Unset pstat.cm RESET and TAKE_OWNER bits
     // Unset pstat.tm RESET and TAKE_OWNER bits
     // Set pstat.dos to RFNOP
-    ret = EnterStateGeneric(true, false, false, false, false, DOS_RFNOP);
+    VERIFY_SUCCESS(TAG,
+        EnterStateGeneric(true, false, false, false, false, DOS_RFNOP),
+        ERROR);
+
+    // Set doxm.owned = TRUE
+    VERIFY_SUCCESS(TAG, OC_STACK_OK == SetDoxmIsOwned(true), ERROR);
 
+    ret = true;
+
+exit:
     OIC_LOG_V(DEBUG, TAG, "%s: returning %s.", __func__, ret?"true":"false");
     return ret;
 }
@@ -328,8 +333,15 @@ static bool EnterRFOTM(void)
     // Unset pstat.cm RESET bit, and set TAKE_OWNER bit
     // Unset pstat.tm RESET and TAKE_OWNER bits
     // Set pstat.dos to RFOTM
-    ret = EnterStateGeneric(false, false, true, false, false, DOS_RFOTM);
+    VERIFY_SUCCESS(TAG,
+        EnterStateGeneric(false, false, true, false, false, DOS_RFOTM),
+        ERROR);
 
+    // Set doxm.owned = FALSE
+    VERIFY_SUCCESS(TAG, OC_STACK_OK == SetDoxmIsOwned(false), ERROR);
+
+    ret = true;
+exit:
     OIC_LOG_V(DEBUG, TAG, "%s: returning %s.", __func__, ret?"true":"false");
     return ret;
 }
@@ -345,8 +357,15 @@ static bool EnterRFPRO(void)
     // Unset pstat.cm RESET and TAKE_OWNER bits
     // Unset pstat.tm RESET and TAKE_OWNER bits
     // Set pstat.dos to RFPRO
-    ret = EnterStateGeneric(false, false, false, false, false, DOS_RFPRO);
+    VERIFY_SUCCESS(TAG,
+        EnterStateGeneric(false, false, false, false, false, DOS_RFPRO),
+        ERROR);
+
+    // Set doxm.owned = TRUE
+    VERIFY_SUCCESS(TAG, OC_STACK_OK == SetDoxmIsOwned(true), ERROR);
 
+    ret = true;
+exit:
     OIC_LOG_V(DEBUG, TAG, "%s: returning %s.", __func__, ret?"true":"false");
     return ret;
 }
index 5b343ac..3d368e6 100644 (file)
@@ -111,7 +111,7 @@ static const uint8_t gDoxmPropertyAccessModes[DOXM_PROPERTY_COUNT][DOS_STATE_COU
     { R,    RW,     R,      R,      R   }, // .oxmsel
 #endif // MULTIPLE_OWNER
     { R,    R,      R,      R,      R   }, // .sct
-    { R,    RW,     R,      R,      R   }, // .owned
+    { R,    R     R,      R,      R   }, // .owned
 #ifdef MULTIPLE_OWNER
     { RW,   RW,    RW,      RW,     RW  }, // .subowner
     { RW,   RW,    RW,      RW,     RW  }, // .mom