void RemoteEnrollee::provisionDeviceProperties(const DeviceProp& deviceProp, const DevicePropProvStatusCb callback) { OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Enter provisionDeviceProperties"); if(!callback) { throw ESInvalidParameterException("Callback is empty"); } m_devicePropProvStatusCb = callback; if (m_enrolleeResource == nullptr) { throw ESBadRequestException ("Device not created"); } if(deviceProp.getSsid().empty()) { throw ESBadRequestException ("Invalid Provisiong Data."); } DevicePropProvStatusCb devicePropProvStatusCb = std::bind( &RemoteEnrollee::devicePropProvisioningStatusHandler, this, std::placeholders::_1); m_enrolleeResource->registerDevicePropProvStatusCallback(devicePropProvStatusCb); m_enrolleeResource->provisionEnrollee(deviceProp); }
void RemoteEnrollee::provisionSecurity(const SecurityProvStatusCb callback) { #ifdef __WITH_DTLS__ if(!callback) { throw ESInvalidParameterException("Callback is empty"); } m_securityProvStatusCb = callback; SecurityProvStatusCb securityProvStatusCb = std::bind( &RemoteEnrollee::securityStatusHandler, this, std::placeholders::_1); //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); 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 ; } #else OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Mediator is unsecured."); std::shared_ptr< SecProvisioningStatus > securityProvisioningStatus = std::make_shared< SecProvisioningStatus > ("", ES_UNSUPPORTED_OPERATION); m_securityProvStatusCb(securityProvisioningStatus); #endif }
void RemoteEnrollee::getConfiguration(const GetConfigurationStatusCb callback) { if(!callback) { throw ESInvalidParameterException("Callback is empty"); } if (m_enrolleeResource == nullptr) { throw ESBadRequestException ("Device not created"); } m_getConfigurationStatusCb = callback; GetConfigurationStatusCb getConfigurationStatusCb = std::bind( &RemoteEnrollee::getConfigurationStatusHandler, this, std::placeholders::_1); m_enrolleeResource->registerGetConfigurationStatusCallback(getConfigurationStatusCb); m_enrolleeResource->getConfiguration(); }
void RemoteEnrollee::registerEasySetupStatusHandler(EasySetupStatusCB callback) { OIC_LOG ( DEBUG, ES_REMOTE_ENROLLEE_TAG, "Entered registerStatusHandler"); if(!callback) { throw ESInvalidParameterException("Callback is empty"); } if (m_easySetupStatusCb) { throw ESBadRequestException("Callback handler already registered"); } else { m_easySetupStatusCb = callback; m_remoteResource = std::make_shared< RemoteEnrolleeResource >(m_ProvConfig, m_wifiOnboardingconn); } }
void RemoteEnrollee::provisionCloudProperties(const CloudProp& cloudProp, const CloudPropProvStatusCb callback) { OIC_LOG(DEBUG,ES_REMOTE_ENROLLEE_TAG,"Enter provisionCloudProperties"); if(!callback) { throw ESInvalidParameterException("Callback is empty"); } m_cloudPropProvStatusCb = callback; if(cloudProp.getAuthCode().empty() || cloudProp.getAuthProvider().empty() || cloudProp.getCiServer().empty()) { throw ESBadRequestException ("Invalid Cloud Provisiong Info."); } try { initCloudResource(); } catch (const std::exception& e) { OIC_LOG_V(ERROR, ES_REMOTE_ENROLLEE_TAG, "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); m_cloudPropProvStatusCb(provStatus); return; } #ifdef __WITH_DTLS__ try { ESResult res = ES_OK; m_enrolleeSecurity = std::make_shared <EnrolleeSecurity> (m_ocResource, ""); if(cloudProp.getCloudID().empty()) { throw ESBadRequestException("Invalid Cloud Server UUID."); } res = m_enrolleeSecurity->performACLProvisioningForCloudServer(cloudProp.getCloudID()); if(res == ESResult::ES_ERROR) { throw ESBadRequestException("Error in provisioning operation!"); } } catch (const std::exception& e) { 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; } #endif if (m_cloudResource == nullptr) { throw ESBadRequestException ("Cloud Resource not created"); } CloudPropProvStatusCb cloudPropProvStatusCb = std::bind( &RemoteEnrollee::cloudPropProvisioningStatusHandler, this, std::placeholders::_1); m_cloudResource->registerCloudPropProvisioningStatusCallback(cloudPropProvStatusCb); m_cloudResource->provisionEnrollee(cloudProp); }