2 To test d2d-manager and sample apps, you must build iotivity locally with following modifications:
\r
4 ### 1. build_common/SConscript
\r
6 defines.append('-DMULTIPLE_OWNER=1')
\r
8 ### 2. packaging/iotivity.spec
\r
10 --- a/packaging/iotivity.spec
\r
11 +++ b/packaging/iotivity.spec
\r
17 Summary: Samsung IoT Connectivity
\r
18 Group: Network & Connectivity / IoT Connectivity
\r
20 @@ -37,7 +37,7 @@ Source1002: %{name}-test.manifest
\r
22 # default is RELEASE mode.
\r
23 # If DEBUG mode is needed, please use tizen_build_devel_mode
\r
24 -%define RELEASE True
\r
25 +%define RELEASE False
\r
27 %if %{RELEASE} == "True"
\r
28 %define build_mode release
\r
29 @@ -89,7 +89,7 @@ Source1002: %{name}-test.manifest
\r
30 %{!?BLE_CUSTOM_ADV: %define BLE_CUSTOM_ADV False}
\r
31 %{!?BLE_DIVISION: %define BLE_DIVISION VD}
\r
32 %{!?BLE_TIZEN_30: %define BLE_TIZEN_30 True}
\r
33 -%{!?MULTIPLE_OWNER: %define MULTIPLE_OWNER 0}
\r
34 +%{!?MULTIPLE_OWNER: %define MULTIPLE_OWNER 1}
\r
36 BuildRequires: expat-devel
\r
37 BuildRequires: python, libcurl-devel
\r
38 @@ -194,7 +194,7 @@ scons %{JOB} --prefix=%{_prefix} \
\r
39 mkdir -p %{buildroot}/%{_datadir}/license
\r
40 cp LICENSE %{buildroot}/%{_datadir}/license/%{name}
\r
42 -rm -rf %{buildroot}
\r
43 +#rm -rf %{buildroot}
\r
44 CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;
\r
45 scons install --install-sandbox=%{buildroot} --prefix=%{_prefix} \
\r
46 ES_TARGET_ENROLLEE=%{ES_TARGET_ENROLLEE} \
\r
47 @@ -259,6 +259,14 @@ cp ./resource/csdk/security/include/*.h %{buildroot}%{_includedir}
\r
48 cp ./resource/csdk/connectivity/api/*.h %{buildroot}%{_includedir}/
\r
49 cp ./resource/csdk/security/include/internal/*.h %{buildroot}%{_includedir}/
\r
50 cp ./resource/csdk/security/provisioning/include/oxm/*.h %{buildroot}%{_includedir}
\r
51 +cp out/%{TARGET_OS}/%{TARGET_ARCH}/%{build_mode}/resource/csdk/security/provisioning/sample/provisioningclient %{ex_install_dir}/provision-sample/
\r
52 +cp ./resource/csdk/security/provisioning/sample/oic_svr_db_client.dat %{ex_install_dir}/provision-sample/
\r
53 +%if 0%{MULTIPLE_OWNER} == 1
\r
54 +cp out/%{TARGET_OS}/%{TARGET_ARCH}/%{build_mode}/resource/csdk/security/provisioning/sample/subownerclient %{ex_install_dir}/provision-sample/
\r
55 +cp ./resource/csdk/security/provisioning/sample/oic_svr_db_subowner_client.dat %{ex_install_dir}/provision-sample/
\r
56 +cp out/%{TARGET_OS}/%{TARGET_ARCH}/%{build_mode}/resource/csdk/security/provisioning/sample/sampleserver_preconfpin %{ex_install_dir}/provision-sample/
\r
57 +cp ./resource/csdk/security/provisioning/sample/oic_svr_db_server_preconfpin.dat %{ex_install_dir}/provision-sample/
\r
59 cp ./resource/csdk/security/provisioning/include/internal/*.h %{buildroot}%{_includedir}
\r
60 cp ./resource/csdk/security/provisioning/include/*.h %{buildroot}%{_includedir}
\r
61 cp ./resource/csdk/security/provisioning/sample/oic_svr_db_server_justworks.dat %{buildroot}%{_libdir}/oic_svr_db_server.dat
\r
62 @@ -286,7 +294,7 @@ ln -fs ../resource %{buildroot}%{_includedir}/iotivity/
\r
66 ### 3. policyengine.c
\r
68 --- a/resource/csdk/security/src/policyengine.c
\r
69 +++ b/resource/csdk/security/src/policyengine.c
\r
70 @@ -192,7 +192,7 @@ static bool IsRequestFromSubOwner(PEContext_t *context)
\r
72 static bool IsValidRequestFromSubOwner(PEContext_t *context)
\r
74 - bool isValidRequest = false;
\r
75 + bool isValidRequest = true;
\r
79 @@ -294,7 +294,7 @@ bool IsRequestFromResourceOwner(PEContext_t *context)
\r
81 if(OC_STACK_OK == GetSvrRownerId[(int)context->resourceType](&resourceOwner))
\r
83 - retVal = UuidCmp(&context->subject, &resourceOwner);
\r
84 + retVal = true;//UuidCmp(&context->subject, &resourceOwner);
\r
90 ### 4. provisioningdatabasemanager.c
\r
93 --- a/resource/csdk/security/provisioning/src/provisioningdatabasemanager.c
\r
94 +++ b/resource/csdk/security/provisioning/src/provisioningdatabasemanager.c
\r
96 #define PDM_BIND_INDEX_THIRD 3
\r
98 #define PDM_CREATE_T_DEVICE_LIST "create table T_DEVICE_LIST(ID INTEGER PRIMARY KEY AUTOINCREMENT,\
\r
99 - UUID BLOB NOT NULL UNIQUE, STATE INT NOT NULL);"
\r
100 + UUID BLOB NOT NULL, STATE INT NOT NULL);"
\r
102 #define PDM_CREATE_T_DEVICE_LINK "create table T_DEVICE_LINK_STATE(ID INT NOT NULL, ID2 INT NOT \
\r
103 NULL,STATE INT NOT NULL, PRIMARY KEY (ID, ID2));"
\r
109 --- a/resource/csdk/stack/include/octypes.h
\r
110 +++ b/resource/csdk/stack/include/octypes.h
\r
111 @@ -1052,7 +1052,9 @@ typedef enum
\r
112 OC_STACK_SERVICE_UNAVAILABLE, /** 503*/
\r
113 OC_STACK_GATEWAY_TIMEOUT, /** 504*/
\r
114 OC_STACK_PROXY_NOT_SUPPORTED, /** 505*/
\r
116 +#ifdef MULTIPLE_OWNER
\r
117 + OC_STACK_LINK_ALREADY_EXIST,
\r
119 /** ERROR in stack.*/
\r
120 OC_STACK_ERROR = 255
\r
121 /** Error status code - END HERE.*/
\r
124 ### 6. multipleownershiptransfermanager.c
\r
126 --- a/resource/csdk/security/provisioning/src/multipleownershiptransfermanager.c
\r
127 +++ b/resource/csdk/security/provisioning/src/multipleownershiptransfermanager.c
\r
128 @@ -652,14 +652,14 @@ OCStackResult MOTAddPreconfigPIN(const OCProvisionDev_t *targetDeviceInfo,
\r
129 VERIFY_NON_NULL(TAG, preconfPIN, ERROR);
\r
130 VERIFY_SUCCESS(TAG, (0 != preconfPINLen), ERROR);
\r
131 VERIFY_SUCCESS(TAG, (0 != preconfPINLen && OXM_PRECONFIG_PIN_MAX_SIZE >= preconfPINLen), ERROR);
\r
134 OicSecCred_t* prevCred = GetCredResourceData(&targetDeviceInfo->doxm->deviceID);
\r
135 if(NULL != prevCred)
\r
137 OIC_LOG(INFO, TAG, "PIN/PW Credential already exist!");
\r
138 return OC_STACK_OK;
\r
142 addCredRes = OC_STACK_NO_MEMORY;
\r
143 //Generate PIN based credential
\r
144 pinCred = (OicSecCred_t*)OICCalloc(1, sizeof(OicSecCred_t));
\r
147 After iotivity build succeeds, copy the following package to GBS-ROOT.
\r
149 * iotivity-1.2.1-9.armv7l.rpm
\r
150 * iotivity-devel-1.2.1-9.armv7l.rpm
\r
154 ~/GBS-ROOT/unified-standard/local/repos/unified_standard/armv7l/RPMS/
\r
157 If you want to build and install the d2d manager easily, use the following guide.
\r
158 ### 1. modify git path variable in {git_path}/material/script/d2d_build.sh & d2d_install.sh script
\r
159 ex) git_path="/data/workspace/d2d-manager"
\r
160 ### 2. copy install script in /usr/bin
\r
161 ex) sudo cp d2d_install.sh /usr/bin
\r
162 ### 3. execute d2d_install.sh
\r
163 ex) $ d2d_install.sh
\r
165 # How to test d2d-subowner
\r
167 We have 2~3 physical devices such as TM1 or U3. Our devices are in same IP subnet.
\r
169 **Pre-conditions)**
\r
170 Execute 2 sampleserver_justworks which has Preconfigured PIN security option (key. 12341234)
\r
173 At physical device#1, run sampleserver_justworks (ex. its uuid: 5c7ad9ac-836b-4ac0-92a8-ca516f9e8dd4)
\r
174 At physical device#2, run sampleserver_justworks (ex. 2nd server's uuid: e4854ed5-65d1-4cc7-8766-3fb7a35e283a)
\r
177 At physical device#2, we execute mdbus2 like below
\r
178 ### 1. Enable d2d-subowner
\r
180 sh-3.2# mdbus2 -s -i
\r
181 MDBUS2> net.d2ds.enabler /net/d2ds/enabler net.d2ds.enabler.enable
\r
185 saerome.kim@lx:~/github_sec/d2d-manager (tizen)$ sdb dlog -v time D2D_SUBOWNER
\r
186 01-01 10:23:35.029+0900 D/D2D_SUBOWNER(14781): d2ds.c: main(40) > Enter
\r
187 01-01 10:23:35.030+0900 I/D2D_SUBOWNER(14781): d2ds.c: main(53) > service mainloop start
\r
188 01-01 10:23:35.030+0900 D/D2D_SUBOWNER(14781): d2ds-service-interface.c: d2ds_service_interface_init(455) > Enter
\r
189 01-01 10:23:35.032+0900 D/D2D_SUBOWNER(14781): d2ds-service-interface.c: d2ds_service_interface_init(464) > Quit
\r
190 01-01 10:23:35.045+0900 D/D2D_SUBOWNER(14781): d2ds-service-interface.c: _d2ds_dbus_on_activator_bus_acquired(370) > Enter
\r
191 01-01 10:23:35.046+0900 D/D2D_SUBOWNER(14781): d2ds-service-interface.c: _d2ds_dbus_on_activator_bus_acquired(391) > Quit
\r
192 01-01 10:23:35.056+0900 D/D2D_SUBOWNER(14781): d2ds-service-interface.c: _d2ds_dbus_on_name_acquired(305) > Acquired the name net.d2ds
\r
193 01-01 10:23:35.063+0900 D/D2D_SUBOWNER(14781): d2ds-service-interface.c: _d2ds_dbus_handle_enable(315) > Enter
\r
194 01-01 10:23:35.526+0900 D/D2D_SUBOWNER(14781): d2ds-service-interface.c: _d2ds_dbus_handle_enable(331) > Quit
\r
197 ### 2. Get d2d-subowner's device ID
\r
200 MDBUS2> net.d2ds /net/d2ds net.d2ds.get_ownerid
\r
201 ('e5d11e8c-7e04-0e9f-fe9f-4bc362f94318', 0)
\r
205 saerome.kim@lx:~/github_sec/d2d-manager (tizen)$ sdb dlog -v time D2D_SUBOWNER
\r
206 01-01 10:23:42.626+0900 D/D2D_SUBOWNER(14781): d2ds-subowner.c: d2ds_request_get_ownerid(1525) > [IPC] Get Device ID
\r
209 ### 3. Find MOT enabled devices in a network
\r
212 MDBUS2> net.d2ds /net/d2ds net.d2ds.disc_mot_enb_devs
\r
217 saerome.kim@lx:~/github_sec/d2d-manager (tizen)$ sdb dlog -v time D2D_SUBOWNER
\r
218 01-01 09:07:40.351+0900 D/D2D_SUBOWNER( 4721): d2ds-subowner.c: d2ds_request_disc_mot_enb_devs(1400) > [IPC] Discovery MOT enabled devices
\r
219 01-01 09:07:40.351+0900 I/D2D_SUBOWNER( 4721): d2ds-subowner.c: _disc_mot_env_devs_func(672) > Discovering Multiple Ownership Transfer enabled Devices on Network..
\r
220 01-01 09:07:44.358+0900 I/D2D_SUBOWNER( 4721): d2ds-subowner.c: _print_no_uuid(219) > [1] 5c7ad9ac-836b-4ac0-92a8-ca516f9e8dd4
\r
221 01-01 09:07:44.358+0900 I/D2D_SUBOWNER( 4721): d2ds-subowner.c: _print_no_uuid(219) > [2] e4854ed5-65d1-4cc7-8766-3fb7a35e283a
\r
222 01-01 09:07:44.358+0900 D/D2D_SUBOWNER( 4721): d2ds-subowner.c: __notify_found_devs(590) > Found 2 MOT enabled devices
\r
223 01-01 09:07:44.359+0900 I/D2D_SUBOWNER( 4721): d2ds-subowner.c: __notify_found_devs(633) > ?doxms?
\r
227 saerome.kim@lx:~/github_sec/d2d-manager (tizen)$ sdb shell dbus-monitor --system "sender='net.d2ds'"
\r
228 method return time=1515149361.403747 sender=:1.50 -> destination=:1.49 serial=29 reply_serial=29
\r
230 signal time=1515149365.404783 sender=:1.50 -> destination=(null destination) serial=30 path=/net/d2ds; interface=net.d2ds; member=disc_mowned_devs_done
\r
235 variant string "e5d11e8c-7e04-0e9f-fe9f-4bc362f94318"
\r
247 variant uint16 59190
\r
251 variant string "fe80::7edd:90ff:feb1:1c53%wlan0"
\r
263 variant uint32 65568
\r
266 string "securePort"
\r
267 variant uint16 35114
\r
271 variant uint16 49193
\r
275 variant string "0.0.0"
\r
285 ### 4. MOT sampleserver_justworks in device#1
\r
288 MDBUS2> net.d2ds /net/d2ds net.d2ds.mot 5c7ad9ac-836b-4ac0-92a8-ca516f9e8dd4 12341234
\r
292 ### 5. MOT sampleserver_justworks in device#2
\r
295 MDBUS2> net.d2ds /net/d2ds net.d2ds.mot e4854ed5-65d1-4cc7-8766-3fb7a35e283a 12341234
\r
299 ### 6. Find owned devices in a network
\r
302 MDBUS2> net.d2ds /net/d2ds net.d2ds.disc_mowned_devs
\r
307 saerome.kim@lx:~/github_sec/d2d-manager (tizen)$ sdb dlog -v time D2D_SUBOWNER
\r
308 01-01 09:08:21.418+0900 D/D2D_SUBOWNER( 4721): d2ds-subowner.c: d2ds_request_disc_owned_devs(1420) > [IPC] Discovery Owned devices using MOT
\r
309 01-01 09:08:21.418+0900 D/D2D_SUBOWNER( 4721): d2ds-subowner.c: _disc_owned_devs_func(721) > Discovering Multiple Owned Devices on Network.
\r
310 01-01 09:08:25.419+0900 I/D2D_SUBOWNER( 4721): d2ds-subowner.c: _print_dev_list(295) > Device List is Empty..
\r
311 01-01 09:08:25.419+0900 I/D2D_SUBOWNER( 4721):
\r
312 01-01 09:08:30.358+0900 I/D2D_SUBOWNER( 4721): d2ds-subowner.c: _print_no_uuid(219) > [1] 5c7ad9ac-836b-4ac0-92a8-ca516f9e8dd4
\r
313 01-01 09:08:30.358+0900 I/D2D_SUBOWNER( 4721): d2ds-subowner.c: _print_no_uuid(219) > [2] e4854ed5-65d1-4cc7-8766-3fb7a35e283a
\r
314 01-01 09:08:30.358+0900 D/D2D_SUBOWNER( 4721): d2ds-subowner.c: __notify_found_devs(590) > Found 2 MOT enabled devices
\r
317 ### 7. ACL Provisioning sampleserver_justworks in device#1
\r
320 MDBUS2> net.d2ds /net/d2ds net.d2ds.prov_acl e4854ed5-65d1-4cc7-8766-3fb7a35e283a 5c7ad9ac-836b-4ac0-92a8-ca516f9e8dd4 /a/led core.led oic.if.baseline 31
\r
324 ### 8. ACL Provisioning sampleserver_justworks in device#2
\r
327 MDBUS2> net.d2ds /net/d2ds net.d2ds.prov_acl 7ad10436-525b-4f4c-890b-84a0f3ad66aa e4854ed5-65d1-4cc7-8766-3fb7a35e283a /a/led core.led oic.if.baseline 31
\r
331 ### 9. Make both sampleserver_justworks pairwise
\r
334 MDBUS2> net.d2ds /net/d2ds net.d2ds.prov_cred f9dfa1a0-f989-4c31-a08c-32b0d0178058 c520f48f-ed51-4986-8c45-47bfb7e8d8bc
\r
339 saerome.kim@lx:~/github_sec/d2d-manager (tizen)$ sdb dlog -v time D2D_SUBOWNER
\r
340 01-01 10:09:12.288+0900 D/D2D_SUBOWNER(13505): d2ds-subowner.c: d2ds_request_prov_cred(1304) > [IPC] Provisioning Credential
\r
341 01-01 10:09:12.288+0900 I/D2D_SUBOWNER(13505): d2ds-subowner.c: _print_uuid(187) > 7b6a3d68-d9cb-4197-bb1f-631fb908f140
\r
342 01-01 10:09:12.288+0900 I/D2D_SUBOWNER(13505): d2ds-subowner.c: _print_uuid(187) > 4dc9c08c-c20f-4cd7-9861-0a90a6d773e0
\r
343 01-01 10:09:12.288+0900 I/D2D_SUBOWNER(13505): d2ds-subowner.c: _print_uuid(187) > 7b6a3d68-d9cb-4197-bb1f-631fb908f140
\r
344 01-01 10:09:12.288+0900 I/D2D_SUBOWNER(13505): d2ds-subowner.c: _cred_provisioning_func(1099) > Provisioning Selected Pairwise Devices..
\r
345 01-01 10:09:12.829+0900 I/D2D_SUBOWNER(13505): d2ds-subowner.c: _cred_provisioning_func(1115) > > Provisioned Selected Pairwise Devices
\r