Fix Doxm Handler for Manufacturer Cert OTM
authorJongmin Choi <jminl.choi@samsung.com>
Wed, 7 Dec 2016 08:21:37 +0000 (17:21 +0900)
committerRandeep Singh <randeep.s@samsung.com>
Fri, 9 Dec 2016 07:18:52 +0000 (07:18 +0000)
Fix error due to confirmable cert OTM

Change-Id: Id191ae12e3842e910a44b9d025794caf6aaaf16b
Signed-off-by: Jongmin Choi <jminl.choi@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/15227
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Jongsung Lee <js126.lee@samsung.com>
Reviewed-by: Randeep Singh <randeep.s@samsung.com>
(cherry picked from commit 50a09e72b62edc9179fdc8b824a0cc6bfbeee88f)
Reviewed-on: https://gerrit.iotivity.org/gerrit/15311

resource/csdk/security/src/doxmresource.c

index 4f11005..c3256d6 100644 (file)
@@ -1319,45 +1319,42 @@ static OCEntityHandlerResult HandleDoxmPostRequest(OCEntityHandlerRequest * ehRe
 #if defined(__WITH_DTLS__) || defined (__WITH_TLS__)
                 else if (OIC_MANUFACTURER_CERTIFICATE ==  newDoxm->oxmSel || OIC_CON_MFG_CERT == newDoxm->oxmSel)
                 {
-                    if (memcmp(&(newDoxm->owner), &emptyOwner, sizeof(OicUuid_t)) == 0)
+                    //Save the owner's UUID to derive owner credential
+                    memcpy(&(gDoxm->owner), &(newDoxm->owner), sizeof(OicUuid_t));
+                    gDoxm->oxmSel = newDoxm->oxmSel;
+                    //Update new state in persistent storage
+                    if (UpdatePersistentStorage(gDoxm))
                     {
-                        //Save the owner's UUID to derive owner credential
-                        memcpy(&(gDoxm->owner), &(newDoxm->owner), sizeof(OicUuid_t));
-                        gDoxm->oxmSel = newDoxm->oxmSel;
-                        //Update new state in persistent storage
-                        if (UpdatePersistentStorage(gDoxm))
-                        {
-                            ehRet = OC_EH_OK;
-                        }
-                        else
-                        {
-                            OIC_LOG(WARNING, TAG, "Failed to update DOXM in persistent storage");
-                            ehRet = OC_EH_ERROR;
-                        }
-                        CAResult_t caRes = CAEnableAnonECDHCipherSuite(false);
-                        VERIFY_SUCCESS(TAG, caRes == CA_STATUS_OK, ERROR);
-                        OIC_LOG(INFO, TAG, "ECDH_ANON CipherSuite is DISABLED");
-
-                        VERIFY_SUCCESS(TAG, CA_STATUS_OK == CAregisterPkixInfoHandler(GetManufacturerPkixInfo), ERROR);
-                        VERIFY_SUCCESS(TAG, CA_STATUS_OK == CAregisterGetCredentialTypesHandler(InitManufacturerCipherSuiteList), ERROR);
+                        ehRet = OC_EH_OK;
                     }
                     else
                     {
-                        //In case of Confirm Manufacturer Cert, get user confirmation
-                        if (OIC_CON_MFG_CERT == newDoxm->oxmSel && false == newDoxm->owned &&
-                                        previousMsgId != ehRequest->messageID)
+                        OIC_LOG(WARNING, TAG, "Failed to update DOXM in persistent storage");
+                        ehRet = OC_EH_ERROR;
+                    }
+                    CAResult_t caRes = CAEnableAnonECDHCipherSuite(false);
+                    VERIFY_SUCCESS(TAG, caRes == CA_STATUS_OK, ERROR);
+                    OIC_LOG(INFO, TAG, "ECDH_ANON CipherSuite is DISABLED");
+
+                    VERIFY_SUCCESS(TAG, CA_STATUS_OK == CAregisterPkixInfoHandler(GetManufacturerPkixInfo), ERROR);
+                    VERIFY_SUCCESS(TAG, CA_STATUS_OK == CAregisterGetCredentialTypesHandler(InitManufacturerCipherSuiteList), ERROR);
+
+                    //In case of Confirm Manufacturer Cert, get user confirmation
+                    if (OIC_CON_MFG_CERT == newDoxm->oxmSel && false == newDoxm->owned &&
+                                    previousMsgId != ehRequest->messageID &&
+                                    memcmp(&(newDoxm->owner), &emptyOwner, sizeof(OicUuid_t)) != 0)
+                    {
+                        if (OC_STACK_OK != VerifyOwnershipTransfer(NULL, USER_CONFIRM))
                         {
-                            if (OC_STACK_OK != VerifyOwnershipTransfer(NULL, USER_CONFIRM))
-                            {
-                                ehRet = OC_EH_NOT_ACCEPTABLE;
-                            }
-                            else
-                            {
-                                ehRet = OC_EH_OK;
-                            }
+                            ehRet = OC_EH_NOT_ACCEPTABLE;
+                        }
+                        else
+                        {
+                            ehRet = OC_EH_OK;
                         }
                     }
 
+
                 }
 #endif // __WITH_DTLS__ or __WITH_TLS__
             }