X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Feasy-setup%2Fmediator%2Frichsdk%2Fsrc%2FRemoteEnrollee.cpp;h=e23f2c24f2e5e9ca0b12566fbeaf3f1c6416a9d5;hb=6b5e9ff337264c38951bef39fd4980ab697f14ac;hp=37608757b60b35e55abef8041ffacabe781e87b7;hpb=9b3a9ddf034df2d3cd30dbfb2fbf6c0acd248c2b;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/easy-setup/mediator/richsdk/src/RemoteEnrollee.cpp b/service/easy-setup/mediator/richsdk/src/RemoteEnrollee.cpp index 3760875..e23f2c2 100755 --- a/service/easy-setup/mediator/richsdk/src/RemoteEnrollee.cpp +++ b/service/easy-setup/mediator/richsdk/src/RemoteEnrollee.cpp @@ -39,7 +39,7 @@ namespace OIC #define ES_REMOTE_ENROLLEE_TAG "ES_REMOTE_ENROLLEE" #define DISCOVERY_TIMEOUT 5 - RemoteEnrollee::RemoteEnrollee(std::shared_ptr< OC::OCResource > resource) + RemoteEnrollee::RemoteEnrollee(const std::shared_ptr< OC::OCResource > resource) { m_ocResource = resource; m_enrolleeResource = std::make_shared(m_ocResource); @@ -54,8 +54,9 @@ namespace OIC } #ifdef __WITH_DTLS__ - ESResult RemoteEnrollee::registerSecurityCallbackHandler(SecurityPinCb securityPinCb, - SecProvisioningDbPathCb secProvisioningDbPathCb) + ESResult RemoteEnrollee::registerSecurityCallbackHandler( + const SecurityPinCb securityPinCb, + const SecProvisioningDbPathCb secProvisioningDbPathCb) { // No need to check NULL for m_secProvisioningDbPathCB as this is not a mandatory // callback function. If m_secProvisioningDbPathCB is NULL, provisioning manager @@ -69,7 +70,7 @@ namespace OIC #endif //__WITH_DTLS__ void RemoteEnrollee::securityStatusHandler( - std::shared_ptr< SecProvisioningStatus > status) + const std::shared_ptr< SecProvisioningStatus > status) const { OIC_LOG_V(DEBUG, ES_REMOTE_ENROLLEE_TAG, "easySetupStatusCallback status is, UUID = %s," "Status = %d", status->getDeviceUUID().c_str(), @@ -80,7 +81,7 @@ namespace OIC OIC_LOG(DEBUG, ES_REMOTE_ENROLLEE_TAG, "Ownership and ACL are successful. " "Continue with Network information provisioning"); - OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Before ProvisionEnrollee"); + OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Before provisionProperties"); m_securityProvStatusCb(status); } @@ -92,7 +93,8 @@ namespace OIC } } - void RemoteEnrollee::getStatusHandler(std::shared_ptr< GetEnrolleeStatus > status) + void RemoteEnrollee::getStatusHandler( + const std::shared_ptr< GetEnrolleeStatus > status) const { OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Entering getStatusHandler"); @@ -102,7 +104,7 @@ namespace OIC } void RemoteEnrollee::getConfigurationStatusHandler ( - std::shared_ptr< GetConfigurationStatus > status) + const std::shared_ptr< GetConfigurationStatus > status) const { OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Entering getConfigurationStatusHandler"); @@ -113,7 +115,7 @@ namespace OIC } void RemoteEnrollee::devicePropProvisioningStatusHandler( - std::shared_ptr< DevicePropProvisioningStatus > status) + const std::shared_ptr< DevicePropProvisioningStatus > status) const { OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Entering DevicePropProvisioningStatusHandler"); @@ -125,12 +127,12 @@ namespace OIC } void RemoteEnrollee::cloudPropProvisioningStatusHandler ( - std::shared_ptr< CloudPropProvisioningStatus > status) + const std::shared_ptr< CloudPropProvisioningStatus > status) const { OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Entering cloudPropProvisioningStatusHandler"); OIC_LOG_V(DEBUG,ES_REMOTE_ENROLLEE_TAG,"CloudProvStatus = %d", - status->getESCloudState()); + status->getESResult()); m_cloudPropProvStatusCb(status); return; @@ -219,9 +221,14 @@ namespace OIC return ES_OK; } - void RemoteEnrollee::provisionSecurity(SecurityProvStatusCb callback) + void RemoteEnrollee::provisionSecurity(const SecurityProvStatusCb callback) { #ifdef __WITH_DTLS__ + ESResult res = ESResult::ES_ERROR; + if(!callback) + { + throw ESInvalidParameterException("Callback is empty"); + } m_securityProvStatusCb = callback; SecurityProvStatusCb securityProvStatusCb = std::bind( @@ -234,33 +241,25 @@ namespace OIC m_enrolleeSecurity->registerCallbackHandler(securityProvStatusCb, m_securityPinCb, m_secProvisioningDbPathCb); - try - { - m_enrolleeSecurity->performOwnershipTransfer(); - } - catch (const std::exception& e) - { - OIC_LOG_V(ERROR, ES_REMOTE_ENROLLEE_TAG, - "Exception for performOwnershipTransfer : %s", e.what()); - - OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Fail performOwnershipTransfer"); - std::shared_ptr< SecProvisioningStatus > securityProvisioningStatus = - std::make_shared< SecProvisioningStatus > - (m_enrolleeSecurity->getUUID(), ES_ERROR); - m_securityProvStatusCb(securityProvisioningStatus); - return ; - } + res = m_enrolleeSecurity->provisionOwnership(); + + std::shared_ptr< SecProvisioningStatus > securityProvisioningStatus = + std::make_shared< SecProvisioningStatus >(m_enrolleeSecurity->getUUID(), res); + m_securityProvStatusCb(securityProvisioningStatus); #else OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Mediator is unsecured."); - + if(!callback) + { + throw ESInvalidParameterException("Callback is empty"); + } std::shared_ptr< SecProvisioningStatus > securityProvisioningStatus = std::make_shared< SecProvisioningStatus > - ("", ES_UNSUPPORTED_OPERATION); - m_securityProvStatusCb(securityProvisioningStatus); + ("", ESResult::ES_SEC_OPERATION_IS_NOT_SUPPORTED); + callback(securityProvisioningStatus); #endif } - void RemoteEnrollee::getStatus(GetStatusCb callback) + void RemoteEnrollee::getStatus(const GetStatusCb callback) { if(!callback) { @@ -281,7 +280,7 @@ namespace OIC } - void RemoteEnrollee::getConfiguration(GetConfigurationStatusCb callback) + void RemoteEnrollee::getConfiguration(const GetConfigurationStatusCb callback) { if(!callback) { @@ -302,7 +301,7 @@ namespace OIC } void RemoteEnrollee::provisionDeviceProperties(const DeviceProp& deviceProp, - DevicePropProvStatusCb callback) + const DevicePropProvStatusCb callback) { OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Enter provisionDeviceProperties"); @@ -328,18 +327,13 @@ namespace OIC this, std::placeholders::_1); m_enrolleeResource->registerDevicePropProvStatusCallback(devicePropProvStatusCb); - m_enrolleeResource->provisionEnrollee(deviceProp); + m_enrolleeResource->provisionProperties(deviceProp); } void RemoteEnrollee::initCloudResource() { ESResult result = ES_ERROR; - if (m_cloudResource != nullptr) - { - throw ESBadRequestException ("Already created"); - } - result = discoverResource(); if (result == ES_ERROR) @@ -354,12 +348,6 @@ namespace OIC if(m_ocResource != nullptr) { m_cloudResource = std::make_shared(m_ocResource); - - std::shared_ptr< CloudPropProvisioningStatus > provStatus = std::make_shared< - CloudPropProvisioningStatus >(ESResult::ES_OK, - ESCloudProvState::ES_CLOUD_ENROLLEE_FOUND); - - m_cloudPropProvStatusCb(provStatus); } else { @@ -369,10 +357,9 @@ namespace OIC } void RemoteEnrollee::provisionCloudProperties(const CloudProp& cloudProp, - CloudPropProvStatusCb callback) + const CloudPropProvStatusCb callback) { OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Enter provisionCloudProperties"); - ESResult res = ES_OK; if(!callback) { @@ -399,45 +386,33 @@ namespace OIC "Exception caught in provisionCloudProperties = %s", e.what()); std::shared_ptr< CloudPropProvisioningStatus > provStatus = std::make_shared< - CloudPropProvisioningStatus >(ESResult::ES_ERROR, - ESCloudProvState::ES_CLOUD_ENROLLEE_NOT_FOUND); + CloudPropProvisioningStatus >(ESResult::ES_ENROLLEE_DISCOVERY_FAILURE); m_cloudPropProvStatusCb(provStatus); return; } - -#ifdef __WITH_DTLS__ - try +#if defined(__WITH_DTLS__) && defined(__WITH_TLS__) + if(!(cloudProp.getCloudID().empty() && cloudProp.getCredID() <= 0)) { + ESResult res = ESResult::ES_ERROR; m_enrolleeSecurity = std::make_shared (m_ocResource, ""); - if(cloudProp.getCloudID().empty()) - { - throw ESBadRequestException("Invalid Cloud Server UUID."); - } - - res = m_enrolleeSecurity->performACLProvisioningForCloudServer(cloudProp.getCloudID()); + res = m_enrolleeSecurity->provisionSecurityForCloudServer(cloudProp.getCloudID(), + cloudProp.getCredID()); - if(res == ESResult::ES_ERROR) + if(res != ESResult::ES_OK) { - throw ESBadRequestException("Error in provisioning operation!"); + m_cloudResource = nullptr; + std::shared_ptr< CloudPropProvisioningStatus > provStatus = std::make_shared< + CloudPropProvisioningStatus >(res); + m_cloudPropProvStatusCb(provStatus); + return; } - } - - catch (const std::exception& e) + else { - OIC_LOG_V(ERROR, ES_REMOTE_ENROLLEE_TAG, - "Exception caught in provisionCloudProperties = %s", e.what()); - - m_cloudResource = nullptr; - - std::shared_ptr< CloudPropProvisioningStatus > provStatus = std::make_shared< - CloudPropProvisioningStatus >(ESResult::ES_ERROR, - ESCloudProvState::ES_CLOUD_PROVISIONING_ERROR); - m_cloudPropProvStatusCb(provStatus); - return; + OIC_LOG(DEBUG, ES_REMOTE_ENROLLEE_TAG, "ACL and Cert. provisioning are skipped."); } -#endif +#endif //defined(__WITH_DTLS__) && defined(__WITH_TLS__) if (m_cloudResource == nullptr) { @@ -449,7 +424,7 @@ namespace OIC this, std::placeholders::_1); m_cloudResource->registerCloudPropProvisioningStatusCallback(cloudPropProvStatusCb); - m_cloudResource->provisionEnrollee(cloudProp); + m_cloudResource->provisionProperties(cloudProp); } } }