Example #1
0
        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);
        }
Example #2
0
        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
        }
Example #3
0
        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();
        }
Example #4
0
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);
    }
}
Example #5
0
        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);
        }