#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<EnrolleeResource>(m_ocResource);
m_deviceId = resource->sid();
}
-#ifdef __WITH_DTLS__
- ESResult RemoteEnrollee::registerSecurityCallbackHandler(SecurityPinCb securityPinCb,
- 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
- // in security layer will try to find the PDM.db file in the local path.
- // If PDM.db is found, the provisioning manager operations will succeed.
- // Otherwise all the provisioning manager operations will fail.
- m_secProvisioningDbPathCb = secProvisioningDbPathCb;
- m_securityPinCb = securityPinCb;
- return ES_OK;
- }
-#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(),
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);
}
}
}
- 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");
}
void RemoteEnrollee::getConfigurationStatusHandler (
- std::shared_ptr< GetConfigurationStatus > status)
+ const std::shared_ptr< GetConfigurationStatus > status) const
{
OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Entering getConfigurationStatusHandler");
}
void RemoteEnrollee::devicePropProvisioningStatusHandler(
- std::shared_ptr< DevicePropProvisioningStatus > status)
+ const std::shared_ptr< DevicePropProvisioningStatus > status) const
{
OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Entering DevicePropProvisioningStatusHandler");
}
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;
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(
//TODO : DBPath is passed empty as of now. Need to take dbpath from application.
m_enrolleeSecurity = std::make_shared <EnrolleeSecurity> (m_ocResource, "");
- m_enrolleeSecurity->registerCallbackHandler(securityProvStatusCb, m_securityPinCb,
- m_secProvisioningDbPathCb);
+ res = m_enrolleeSecurity->provisionOwnership();
- 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 ;
- }
+ 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)
{
}
- void RemoteEnrollee::getConfiguration(GetConfigurationStatusCb callback)
+ void RemoteEnrollee::getConfiguration(const GetConfigurationStatusCb callback)
{
if(!callback)
{
}
void RemoteEnrollee::provisionDeviceProperties(const DeviceProp& deviceProp,
- DevicePropProvStatusCb callback)
+ const DevicePropProvStatusCb callback)
{
OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Enter provisionDeviceProperties");
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)
if(m_ocResource != nullptr)
{
m_cloudResource = std::make_shared<CloudResource>(m_ocResource);
-
- std::shared_ptr< CloudPropProvisioningStatus > provStatus = std::make_shared<
- CloudPropProvisioningStatus >(ESResult::ES_OK,
- ESCloudProvState::ES_CLOUD_ENROLLEE_FOUND);
-
- m_cloudPropProvStatusCb(provStatus);
}
else
{
}
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)
{
"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 <EnrolleeSecurity> (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)
{
this, std::placeholders::_1);
m_cloudResource->registerCloudPropProvisioningStatusCallback(cloudPropProvStatusCb);
- m_cloudResource->provisionEnrollee(cloudProp);
+ m_cloudResource->provisionProperties(cloudProp);
}
}
}