From 6f6aa08d4e7ac7379a398155fe1bc1b96bf8bddc Mon Sep 17 00:00:00 2001 From: Shujuan Chen Date: Thu, 21 Apr 2016 14:07:39 +0200 Subject: [PATCH] Update secure sample and SVRs for testing NonDevOwner client. - 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 Reviewed-on: https://gerrit.iotivity.org/gerrit/8365 Tested-by: jenkins-iotivity Reviewed-by: Randeep Singh --- .../csdk/stack/samples/linux/secure/SConscript | 8 +- .../samples/linux/secure/occlientbasicops.cpp | 33 +++++-- ...b_client.dat => oic_svr_db_client_devowner.dat} | Bin ...client.json => oic_svr_db_client_devowner.json} | 0 .../linux/secure/oic_svr_db_client_nondevowner.dat | Bin 0 -> 941 bytes .../secure/oic_svr_db_client_nondevowner.json | 108 +++++++++++++++++++++ .../samples/linux/secure/oic_svr_db_server.dat | Bin 1764 -> 1764 bytes .../samples/linux/secure/oic_svr_db_server.json | 2 +- 8 files changed, 140 insertions(+), 11 deletions(-) rename resource/csdk/stack/samples/linux/secure/{oic_svr_db_client.dat => oic_svr_db_client_devowner.dat} (100%) rename resource/csdk/stack/samples/linux/secure/{oic_svr_db_client.json => oic_svr_db_client_devowner.json} (100%) create mode 100644 resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.dat create mode 100644 resource/csdk/stack/samples/linux/secure/oic_svr_db_client_nondevowner.json diff --git a/resource/csdk/stack/samples/linux/secure/SConscript b/resource/csdk/stack/samples/linux/secure/SConscript index e15ae78..3cd3cb4 100644 --- a/resource/csdk/stack/samples/linux/secure/SConscript +++ b/resource/csdk/stack/samples/linux/secure/SConscript @@ -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')) diff --git a/resource/csdk/stack/samples/linux/secure/occlientbasicops.cpp b/resource/csdk/stack/samples/linux/secure/occlientbasicops.cpp index 0f5d93b..f531773 100644 --- a/resource/csdk/stack/samples/linux/secure/occlientbasicops.cpp +++ b/resource/csdk/stack/samples/linux/secure/occlientbasicops.cpp @@ -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.dat b/resource/csdk/stack/samples/linux/secure/oic_svr_db_client_devowner.dat similarity index 100% rename from resource/csdk/stack/samples/linux/secure/oic_svr_db_client.dat rename to resource/csdk/stack/samples/linux/secure/oic_svr_db_client_devowner.dat diff --git a/resource/csdk/stack/samples/linux/secure/oic_svr_db_client.json b/resource/csdk/stack/samples/linux/secure/oic_svr_db_client_devowner.json similarity index 100% rename from resource/csdk/stack/samples/linux/secure/oic_svr_db_client.json rename to resource/csdk/stack/samples/linux/secure/oic_svr_db_client_devowner.json 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 index 0000000000000000000000000000000000000000..bbdd93eba888b7848e205cb13ba9c55e0277fa89 GIT binary patch literal 941 zcmb7D%}&EG3|`r*a6)3$v=djJfaAC=wcRyc(?m(SpW}AnHDFAFC*Zo5f-}UO3S;UJ zO%z-5XFL8JXAc63`{;3-1}&X`LILD9&ofsgIf1V#iQ-CHa=NksdDvlQDa~RnAr4ls zR7?`