//
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+#include <string.h>
#include "resourcemanager.h"
#include "securevirtualresourcetypes.h"
#include "aclresource.h"
#include "pstatresource.h"
#include "doxmresource.h"
#include "credresource.h"
-#include "svcresource.h"
#include "amaclresource.h"
#include "oic_malloc.h"
#include "oic_string.h"
#include "logger.h"
#include "utlist.h"
-#include <string.h>
-#define TAG "SRM-RM"
+//#ifdef DIRECT_PAIRING
+#include "pconfresource.h"
+#include "dpairingresource.h"
+//#endif // DIRECT_PAIRING
+#include "verresource.h"
+#include "psinterface.h"
+
+#define TAG "OIC_SRM_RM"
+
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
+#include "crlresource.h"
+#endif // __WITH_DTLS__ || __WITH_TLS__
-/**
- * This method is used by all secure resource modules to send responses to REST queries.
- *
- * @param ehRequest pointer to entity handler request data structure.
- * @param ehRet result code from entity handler.
- * @param rspPayload response payload in JSON.
- *
- * @retval OC_STACK_OK for Success, otherwise some error value
- */
OCStackResult SendSRMResponse(const OCEntityHandlerRequest *ehRequest,
- OCEntityHandlerResult ehRet, const char *rspPayload)
+ OCEntityHandlerResult ehRet, uint8_t *cborPayload, size_t size)
{
- OC_LOG (INFO, TAG, "SRM sending SRM response");
- OCEntityHandlerResponse response = {.requestHandle = NULL};
+ OIC_LOG(DEBUG, TAG, "SRM sending SRM response");
+ OCStackResult ret = OC_STACK_ERROR;
+
if (ehRequest)
{
+ OCEntityHandlerResponse response = {.requestHandle = 0};
OCSecurityPayload ocPayload = {.base = {.type = PAYLOAD_TYPE_INVALID}};
response.requestHandle = ehRequest->requestHandle;
response.resourceHandle = ehRequest->resource;
response.ehResult = ehRet;
- response.payload = (OCPayload*)(&ocPayload);
+ response.payload = (OCPayload *)(&ocPayload);
response.payload->type = PAYLOAD_TYPE_SECURITY;
- ((OCSecurityPayload*)response.payload)->securityData = (char *)rspPayload;
+ ((OCSecurityPayload *)response.payload)->securityData = cborPayload;
+ ((OCSecurityPayload *)response.payload)->payloadSize = size;
response.persistentBufferFlag = 0;
- return OCDoResponse(&response);
+ ret = OCDoResponse(&response);
}
- return OC_STACK_ERROR;
+ return ret;
}
-/**
- * Initialize all secure resources ( /oic/sec/cred, /oic/sec/acl, /oic/sec/pstat etc).
- *
- * @retval OC_STACK_OK for Success, otherwise some error value
- */
OCStackResult InitSecureResources( )
{
OCStackResult ret;
+ ret = InitPersistentStorageInterface();
+
/*
* doxm resource should be initialized first as it contains the DeviceID
* which MAY be used during initialization of other resources.
*/
- ret = InitDoxmResource();
-
+ if(OC_STACK_OK == ret)
+ {
+ ret = InitDoxmResource();
+ }
if(OC_STACK_OK == ret)
{
ret = InitPstatResource();
{
ret = InitCredResource();
}
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
if(OC_STACK_OK == ret)
{
- ret = InitSVCResource();
- }
- if(OC_STACK_OK == ret)
+ ret = InitCRLResource();
+ }
+#endif // __WITH_DTLS__ || __WITH_TLS__
+ if(OC_STACK_OK == ret)
{
ret = InitAmaclResource();
}
+//#ifdef DIRECT_PAIRING
+ if(OC_STACK_OK == ret)
+ {
+ ret = InitPconfResource();
+ }
+ if(OC_STACK_OK == ret)
+ {
+ ret = InitDpairingResource();
+ }
+//#endif // DIRECT_PAIRING
+ if(OC_STACK_OK == ret)
+ {
+ ret = InitVerResource();
+ }
if(OC_STACK_OK != ret)
{
//TODO: Update the default behavior if one of the SVR fails
return ret;
}
-/**
- * Perform cleanup for secure resources ( /oic/sec/cred, /oic/sec/acl, /oic/sec/pstat etc).
- *
- * @retval OC_STACK_OK for Success, otherwise some error value
- */
OCStackResult DestroySecureResources( )
{
DeInitACLResource();
DeInitCredResource();
DeInitDoxmResource();
DeInitPstatResource();
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
+ DeInitCRLResource();
+#endif // __WITH_DTLS__ || __WITH_TLS__
+ DeInitAmaclResource();
+//#ifdef DIRECT_PAIRING
+ DeInitPconfResource();
+ DeInitDpairingResource();
+//#endif // DIRECT_PAIRING
+ DeInitVerResource();
+ DeinitPersistentStorageInterface();
return OC_STACK_OK;
}