replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / security / src / resourcemanager.c
index 5eefbd4..6d7c8e1 100644 (file)
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
+#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 PCF("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, PCF("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();
@@ -93,14 +96,30 @@ OCStackResult InitSecureResources( )
     {
         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
@@ -109,17 +128,22 @@ OCStackResult InitSecureResources( )
     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;
 }