Update secure sample and SVRs for testing NonDevOwner client.
authorShujuan Chen <shujuan.chen@intel.com>
Thu, 21 Apr 2016 12:07:39 +0000 (14:07 +0200)
committerRandeep Singh <randeep.s@samsung.com>
Fri, 27 May 2016 09:18:40 +0000 (09:18 +0000)
- Requests from DevOwner are allowed without checking ACL.
- Requests from NonDevOwner are checked against ACL against
  subjectuuid, permission and period-recurrence.

Change-Id: Icbf9b19f3fc6f2676b970c39dd0b74cea5d862bd
Signed-off-by: Shujuan Chen <shujuan.chen@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/8365
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Randeep Singh <randeep.s@samsung.com>
resource/csdk/stack/samples/linux/secure/SConscript
resource/csdk/stack/samples/linux/secure/occlientbasicops.cpp
resource/csdk/stack/samples/linux/secure/oic_svr_db_client_devowner.dat [moved from resource/csdk/stack/samples/linux/secure/oic_svr_db_client.dat with 100% similarity]
resource/csdk/stack/samples/linux/secure/oic_svr_db_client_devowner.json [moved from resource/csdk/stack/samples/linux/secure/oic_svr_db_client.json with 100% similarity]
resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.dat [new file with mode: 0644]
resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.json [new file with mode: 0644]
resource/csdk/stack/samples/linux/secure/oic_svr_db_server.dat
resource/csdk/stack/samples/linux/secure/oic_svr_db_server.json

index e15ae78..3cd3cb4 100644 (file)
@@ -82,7 +82,9 @@ sec_samples_build_dir = env.get('BUILD_DIR') +'/resource/csdk/stack/samples/linu
 samples_env.Alias("install", samples_env.Install( sec_samples_build_dir,
     sec_samples_src_dir + 'oic_svr_db_server.json'))
 samples_env.Alias("install", samples_env.Install( sec_samples_build_dir,
-    sec_samples_src_dir + 'oic_svr_db_client.json'))
+    sec_samples_src_dir + 'oic_svr_db_client_devowner.json'))
+samples_env.Alias("install", samples_env.Install( sec_samples_build_dir,
+    sec_samples_src_dir + 'oic_svr_db_client_nondevowner.json'))
 samples_env.Alias("install", samples_env.Install( sec_samples_build_dir,
     sec_samples_src_dir + 'oic_amss_db.json'))
 if env.get('SECURED') == '1':
@@ -94,6 +96,8 @@ if env.get('SECURED') == '1':
 samples_env.Alias("install", samples_env.Install( sec_samples_build_dir,
     sec_samples_src_dir + 'oic_svr_db_server.dat'))
 samples_env.Alias("install", samples_env.Install( sec_samples_build_dir,
-    sec_samples_src_dir + 'oic_svr_db_client.dat'))
+    sec_samples_src_dir + 'oic_svr_db_client_devowner.dat'))
+samples_env.Alias("install", samples_env.Install( sec_samples_build_dir,
+    sec_samples_src_dir + 'oic_svr_db_client_nondevowner.dat'))
 samples_env.Alias("install", samples_env.Install( sec_samples_build_dir,
     sec_samples_src_dir + 'oic_amss_db.dat'))
index 0f5d93b..f531773 100644 (file)
@@ -37,6 +37,7 @@
 static int UnicastDiscovery = 0;
 static int TestCase = 0;
 static int ConnType = 0;
+static int DevOwner = 0;
 
 static char DISCOVERY_QUERY[] = "%s/oic/res";
 OCConnectivityType discoveryReqConnType = CT_ADAPTER_IP;
@@ -49,7 +50,8 @@ static OCConnectivityType ocConnType;
 //Secure Virtual Resource database for Iotivity Client application
 //It contains Client's Identity and the PSK credentials
 //of other devices which the client trusts
-static char CRED_FILE[] = "oic_svr_db_client.dat";
+static char CRED_FILE_DEVOWNER[] = "oic_svr_db_client_devowner.dat";
+static char CRED_FILE_NONDEVOWNER[] = "oic_svr_db_client_nondevowner.dat";
 
 
 int gQuitFlag = 0;
@@ -89,6 +91,8 @@ static void PrintUsage()
     OIC_LOG(INFO, TAG, "-t 3 : Discover Resources and Initiate Confirmable Get/Put/Post Requests");
     OIC_LOG(INFO, TAG, "-c 0 : Default auto-selection");
     OIC_LOG(INFO, TAG, "-c 1 : IP Connectivity Type");
+    OIC_LOG(INFO, TAG, "-d 0 : Client as Device Owner");
+    OIC_LOG(INFO, TAG, "-d 1 : Client as Non Device Owner");
 }
 
 OCStackResult InvokeOCDoResource(std::ostringstream &query,
@@ -203,7 +207,7 @@ OCStackApplicationResult discoveryReqCB(void*, OCDoHandle,
 
 int InitPutRequest(OCQualityOfService qos)
 {
-    OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
+    OIC_LOG_V(INFO, TAG, "Executing %s", __func__);
     std::ostringstream query;
     query << coapServerResource;
     endpoint.flags = (OCTransportFlags)(endpoint.flags|OC_SECURE);
@@ -214,7 +218,8 @@ int InitPutRequest(OCQualityOfService qos)
 int InitPostRequest(OCQualityOfService qos)
 {
     OCStackResult result;
-    OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
+
+    OIC_LOG_V(INFO, TAG, "Executing %s", __func__);
     std::ostringstream query;
     query << coapServerResource;
     endpoint.flags = (OCTransportFlags)(endpoint.flags|OC_SECURE);
@@ -246,7 +251,7 @@ int InitPostRequest(OCQualityOfService qos)
 
 int InitGetRequest(OCQualityOfService qos)
 {
-    OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
+    OIC_LOG_V(INFO, TAG, "Executing %s", __func__);
     std::ostringstream query;
     query << coapServerResource;
     endpoint.flags = (OCTransportFlags)(endpoint.flags|OC_SECURE);
@@ -299,18 +304,24 @@ int InitDiscovery()
     return ret;
 }
 
-FILE* client_fopen(const char *path, const char *mode)
+FILE* client_fopen_devowner(const char *path, const char *mode)
 {
     (void)path;
-    return fopen(CRED_FILE, mode);
+    return fopen(CRED_FILE_DEVOWNER, mode);
 }
 
+FILE* client_fopen_nondevowner(const char *path, const char *mode)
+{
+    (void)path;
+    return fopen(CRED_FILE_NONDEVOWNER, mode);
+}
 int main(int argc, char* argv[])
 {
     int opt;
     struct timespec timeout;
+    OCPersistentStorage ps;
 
-    while ((opt = getopt(argc, argv, "u:t:c:")) != -1)
+    while ((opt = getopt(argc, argv, "u:t:c:d:")) != -1)
     {
         switch(opt)
         {
@@ -323,6 +334,9 @@ int main(int argc, char* argv[])
             case 'c':
                 ConnType = atoi(optarg);
                 break;
+            case 'd':
+                DevOwner = atoi(optarg);
+                break;
             default:
                 PrintUsage();
                 return -1;
@@ -350,7 +364,10 @@ int main(int argc, char* argv[])
 
 
     // Initialize Persistent Storage for SVR database
-    OCPersistentStorage ps = { client_fopen, fread, fwrite, fclose, unlink };
+    if (DevOwner)
+        ps = { client_fopen_devowner, fread, fwrite, fclose, unlink };
+    else
+        ps = { client_fopen_nondevowner, fread, fwrite, fclose, unlink };
     OCRegisterPersistentStorageHandler(&ps);
 
     /* Initialize OCStack*/
diff --git a/resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.dat b/resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.dat
new file mode 100644 (file)
index 0000000..bbdd93e
Binary files /dev/null and b/resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.dat differ
diff --git a/resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.json b/resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.json
new file mode 100644 (file)
index 0000000..07cc051
--- /dev/null
@@ -0,0 +1,108 @@
+{\r
+    "acl": {\r
+        "aclist": {\r
+            "aces": [\r
+                {\r
+                    "subjectuuid": "*",\r
+                    "resources": [\r
+                        {\r
+                            "href": "/oic/res",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        },\r
+                        {\r
+                            "href": "/oic/d",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        },\r
+                        {\r
+                            "href": "/oic/p",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        },\r
+                        {\r
+                            "href": "/oic/res/types/d",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        },\r
+                        {\r
+                            "href": "/oic/ad",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        },\r
+                        {\r
+                            "href": "/oic/sec/acl",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        },\r
+                        {\r
+                            "href": "/oic/sec/amacl",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        }\r
+                    ],\r
+                    "permission": 2\r
+                },\r
+                {\r
+                    "subjectuuid": "*",\r
+                    "resources": [\r
+                        {\r
+                            "href": "/oic/sec/doxm",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        } ,\r
+                        {\r
+                            "href": "/oic/sec/pstat",\r
+                            "rel": "",\r
+                            "rt": "",\r
+                            "if": ""\r
+                        }\r
+                    ],\r
+                    "permission": 2\r
+                }\r
+            ]\r
+        },\r
+        "rowneruuid" : "31393139-3139-3139-3139-313931393139"\r
+    },\r
+    "pstat": {\r
+        "isop": true,\r
+        "deviceuuid": "31393139-3139-3139-3139-313931393139",\r
+        "rowneruuid": "31393139-3139-3139-3139-313931393139",\r
+        "cm": 0,\r
+        "tm": 0,\r
+        "om": 3,\r
+        "sm": 3\r
+        },\r
+    "doxm": {\r
+        "oxms": [0],\r
+        "oxmsel": 0,\r
+        "sct": 1,\r
+        "owned": true,\r
+        "deviceuuid": "31393139-3139-3139-3139-313931393139",\r
+        "devowneruuid": "31393139-3139-3139-3139-313931393139",\r
+        "rowneruuid": "31393139-3139-3139-3139-313931393139",\r
+        "dpc": false\r
+    },\r
+    "cred": {\r
+        "creds": [\r
+            {\r
+                "credid": 1,\r
+                "subjectuuid": "31313131-3131-3131-3131-313131313131",\r
+                "credtype": 1,\r
+                "privatedata": {\r
+                    "data": "BBBBBBBBBBBBBBBB",\r
+                    "encoding": "oic.sec.encoding.raw"\r
+                }\r
+            }\r
+        ],\r
+        "rowneruuid": "31393139-3139-3139-3139-313931393139"\r
+    }\r
+}\r
index 693c81d..7f5457c 100644 (file)
Binary files a/resource/csdk/stack/samples/linux/secure/oic_svr_db_server.dat and b/resource/csdk/stack/samples/linux/secure/oic_svr_db_server.dat differ
index 920c945..1dd7463 100644 (file)
@@ -93,7 +93,7 @@
                     "permission": 8\r
                 },\r
                 {\r
-                    "subjectuuid": "31313131-3232-3232-3333-333334343434",\r
+                    "subjectuuid": "31393139-3139-3139-3139-313931393139",\r
                     "resources": [\r
                         {\r
                             "href": "/a/led",\r