From 9925c6e8d35ccb4df9925090989643de7c60870e Mon Sep 17 00:00:00 2001 From: "koushik.girijala" Date: Tue, 10 Nov 2015 13:20:08 +0530 Subject: [PATCH] Placed OC random functionality at common place for RI and CA to use Moved OC random implementation to c_common folder to make it available for CA as well. As Seed Random should be called at common place for RI and CA. Change-Id: I0a7cd674b9c4212b3a1d1e382aa1f455bec1a6d2 Signed-off-by: koushik.girijala Reviewed-on: https://gerrit.iotivity.org/gerrit/4101 Tested-by: jenkins-iotivity Reviewed-by: Jon A. Cruz --- examples/OICMiddle/SConscript | 2 +- examples/OICSensorBoard/Makefile | 2 +- resource/c_common/SConscript | 17 +++++---- .../{csdk => c_common}/ocrandom/include/ocrandom.h | 0 .../{csdk => c_common}/ocrandom/src/ocrandom.c | 4 +-- .../{csdk => c_common}/ocrandom/test/SConscript | 2 +- .../ocrandom/test/android/randomtest.cpp | 0 .../ocrandom/test/arduino/randomtest.cpp | 0 .../ocrandom/test/linux/randomtest.cpp | 0 resource/csdk/SConscript | 6 ++-- .../build/tizen/packaging/com.oic.ca.spec | 1 + .../csdk/connectivity/src/caconnectivitymanager.c | 6 ++++ resource/csdk/connectivity/src/caprotocolmessage.c | 40 ++-------------------- resource/csdk/doc/Doxyfile | 2 +- resource/csdk/routing/SConscript | 2 +- resource/csdk/security/SConscript | 2 +- resource/csdk/security/provisioning/SConscript | 2 +- .../provisioning/ck_manager/sample/SConscript | 2 +- resource/csdk/stack/src/ocstack.c | 1 - resource/csdk/stack/test/SConscript | 2 +- resource/examples/SConscript | 2 +- resource/src/SConscript | 2 +- resource/unit_tests.scons | 2 +- resource/unittests/SConscript | 2 +- service/simulator/SConscript | 4 +-- service/third_party_libs.scons | 2 +- tools/darwin/mkfwk_ios.sh | 2 +- tools/darwin/mkfwk_osx.sh | 2 +- tools/tizen/iotivity.spec | 2 +- 29 files changed, 43 insertions(+), 70 deletions(-) rename resource/{csdk => c_common}/ocrandom/include/ocrandom.h (100%) rename resource/{csdk => c_common}/ocrandom/src/ocrandom.c (99%) rename resource/{csdk => c_common}/ocrandom/test/SConscript (97%) rename resource/{csdk => c_common}/ocrandom/test/android/randomtest.cpp (100%) rename resource/{csdk => c_common}/ocrandom/test/arduino/randomtest.cpp (100%) rename resource/{csdk => c_common}/ocrandom/test/linux/randomtest.cpp (100%) diff --git a/examples/OICMiddle/SConscript b/examples/OICMiddle/SConscript index 6748493..8c1152d 100644 --- a/examples/OICMiddle/SConscript +++ b/examples/OICMiddle/SConscript @@ -34,7 +34,7 @@ examples_env = lib_env.Clone() examples_env.AppendUnique(CPPPATH = [ '../../resource/include/', '../../resource/csdk/stack/include', - '../../resource/csdk/ocrandom/include', + '../../resource/c_common/ocrandom/include', '../../resource/csdk/logger/include', '../../resource/oc_logger/include' ]) diff --git a/examples/OICSensorBoard/Makefile b/examples/OICSensorBoard/Makefile index 8a6939b..ab12e21 100644 --- a/examples/OICSensorBoard/Makefile +++ b/examples/OICSensorBoard/Makefile @@ -7,7 +7,7 @@ YOCTOCXXFLAGS=-I$(SDKTARGETSYSROOT)/usr/include/iotivity/resource/ -I$(SDKTARGET YOCTOLDFLAGS=-loc -loctbstack -loc_logger -lmraa -CXXFLAGS=-I../../resource/include -I../../resource/csdk/stack/include -I../../resource/csdk/ocrandom/include -I../../resource/csdk/logger/include -I../../resource/oc_logger/include +CXXFLAGS=-I../../resource/include -I../../resource/csdk/stack/include -I../../resource/c_common/ocrandom/include -I../../resource/csdk/logger/include -I../../resource/oc_logger/include LDFLAGS=-L../../out/linux/$(CLIENTARCH)/$(BUILDTYPE) -loc -loctbstack -loc_logger diff --git a/resource/c_common/SConscript b/resource/c_common/SConscript index bdbf06b..2136b4f 100644 --- a/resource/c_common/SConscript +++ b/resource/c_common/SConscript @@ -28,7 +28,8 @@ env.AppendUnique(CPPPATH = [ os.path.join(Dir('.').abspath), os.path.join(Dir('.').abspath, 'oic_malloc/include'), os.path.join(Dir('.').abspath, 'oic_string/include'), - os.path.join(Dir('.').abspath, 'oic_time/include') + os.path.join(Dir('.').abspath, 'oic_time/include'), + os.path.join(Dir('.').abspath, 'ocrandom/include') ]) if target_os == 'tizen': @@ -36,7 +37,10 @@ if target_os == 'tizen': else: env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource/c_common')]) -env.AppendUnique(LIBS = ['c_common']) +if target_os in ['tizen', 'linux']: + env.ParseConfig("pkg-config --cflags --libs uuid") + +env.PrependUnique(LIBS = ['c_common']) common_env = env.Clone() @@ -48,10 +52,11 @@ common_env = env.Clone() # Source files and Targets ###################################################################### common_src = [ - 'oic_string/src/oic_string.c', - 'oic_malloc/src/oic_malloc.c', - 'oic_time/src/oic_time.c' - ] + 'oic_string/src/oic_string.c', + 'oic_malloc/src/oic_malloc.c', + 'oic_time/src/oic_time.c', + 'ocrandom/src/ocrandom.c', + ] commonlib = common_env.StaticLibrary('c_common', common_src) common_env.InstallTarget(commonlib, 'c_common') diff --git a/resource/csdk/ocrandom/include/ocrandom.h b/resource/c_common/ocrandom/include/ocrandom.h similarity index 100% rename from resource/csdk/ocrandom/include/ocrandom.h rename to resource/c_common/ocrandom/include/ocrandom.h diff --git a/resource/csdk/ocrandom/src/ocrandom.c b/resource/c_common/ocrandom/src/ocrandom.c similarity index 99% rename from resource/csdk/ocrandom/src/ocrandom.c rename to resource/c_common/ocrandom/src/ocrandom.c index debbee1..78d2bc9 100644 --- a/resource/csdk/ocrandom/src/ocrandom.c +++ b/resource/c_common/ocrandom/src/ocrandom.c @@ -143,7 +143,7 @@ int8_t OCSeedRandom() { result += result + GetRandomBit(); } - randomSeed(result); + srandom(result); return 0; #endif @@ -173,7 +173,7 @@ uint8_t OCGetRandomByte(void) #if defined(__ANDROID__) || defined(__linux__) || defined(__APPLE__) return rand() & 0x00FF; #elif defined ARDUINO - return random(256) & 0x00FF; + return random() & 0x00FF; #endif } diff --git a/resource/csdk/ocrandom/test/SConscript b/resource/c_common/ocrandom/test/SConscript similarity index 97% rename from resource/csdk/ocrandom/test/SConscript rename to resource/c_common/ocrandom/test/SConscript index 2e7bc52..86e08a1 100644 --- a/resource/csdk/ocrandom/test/SConscript +++ b/resource/c_common/ocrandom/test/SConscript @@ -63,4 +63,4 @@ if env.get('TEST') == '1': from tools.scons.RunTest import * run_test(randomtest_env, 'resource_csdk_random_test.memcheck', - 'resource/csdk/ocrandom/test/randomtests') + 'resource/c_common/ocrandom/test/randomtests') diff --git a/resource/csdk/ocrandom/test/android/randomtest.cpp b/resource/c_common/ocrandom/test/android/randomtest.cpp similarity index 100% rename from resource/csdk/ocrandom/test/android/randomtest.cpp rename to resource/c_common/ocrandom/test/android/randomtest.cpp diff --git a/resource/csdk/ocrandom/test/arduino/randomtest.cpp b/resource/c_common/ocrandom/test/arduino/randomtest.cpp similarity index 100% rename from resource/csdk/ocrandom/test/arduino/randomtest.cpp rename to resource/c_common/ocrandom/test/arduino/randomtest.cpp diff --git a/resource/csdk/ocrandom/test/linux/randomtest.cpp b/resource/c_common/ocrandom/test/linux/randomtest.cpp similarity index 100% rename from resource/csdk/ocrandom/test/linux/randomtest.cpp rename to resource/c_common/ocrandom/test/linux/randomtest.cpp diff --git a/resource/csdk/SConscript b/resource/csdk/SConscript index 52c075d..a8cc76e 100644 --- a/resource/csdk/SConscript +++ b/resource/csdk/SConscript @@ -44,7 +44,6 @@ liboctbstack_env.PrependUnique(CPPPATH = [ '../../extlibs/cjson/', '../../extlibs/timer/', 'logger/include', - 'ocrandom/include', 'stack/include', 'stack/include/internal', '../oc_logger/include', @@ -83,8 +82,8 @@ if target_os in ['android', 'linux', 'tizen']: liboctbstack_env.AppendUnique(LIBS = ['coap', 'm']) -if target_os == 'tizen': - liboctbstack_env.ParseConfig("pkg-config --cflags --libs uuid") +if target_os in ['tizen', 'linux']: + liboctbstack_env.ParseConfig("pkg-config --cflags --libs uuid") if target_os not in ['android', 'arduino', 'windows', 'winrt']: liboctbstack_env.AppendUnique(LIBS = ['pthread']) @@ -137,7 +136,6 @@ liboctbstack_src = [ OCTBSTACK_SRC + 'occollection.c', OCTBSTACK_SRC + 'oicgroup.c', 'logger/src/logger.c', - 'ocrandom/src/ocrandom.c', OCTBSTACK_SRC + "rdpayload.c" ] diff --git a/resource/csdk/connectivity/build/tizen/packaging/com.oic.ca.spec b/resource/csdk/connectivity/build/tizen/packaging/com.oic.ca.spec index 1602200..acb41b7 100644 --- a/resource/csdk/connectivity/build/tizen/packaging/com.oic.ca.spec +++ b/resource/csdk/connectivity/build/tizen/packaging/com.oic.ca.spec @@ -20,6 +20,7 @@ BuildRequires: boost-thread BuildRequires: boost-system BuildRequires: boost-filesystem BuildRequires: scons +BuildRequires: pkgconfig(uuid) %description diff --git a/resource/csdk/connectivity/src/caconnectivitymanager.c b/resource/csdk/connectivity/src/caconnectivitymanager.c index 9f6aef8..a71b849 100644 --- a/resource/csdk/connectivity/src/caconnectivitymanager.c +++ b/resource/csdk/connectivity/src/caconnectivitymanager.c @@ -63,6 +63,11 @@ CAResult_t CAInitialize() if (!g_isInitialized) { + if (0 != OCSeedRandom()) + { + OIC_LOG(ERROR, TAG, "Seed Random Failed"); + } + CAResult_t res = CAInitializeMessageHandler(); if (res != CA_STATUS_OK) { @@ -71,6 +76,7 @@ CAResult_t CAInitialize() } g_isInitialized = true; } + return CA_STATUS_OK; } diff --git a/resource/csdk/connectivity/src/caprotocolmessage.c b/resource/csdk/connectivity/src/caprotocolmessage.c index d5f9a3e..1a4e2b0 100644 --- a/resource/csdk/connectivity/src/caprotocolmessage.c +++ b/resource/csdk/connectivity/src/caprotocolmessage.c @@ -24,7 +24,6 @@ // For glibc information on feature test macros, // Refer http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html // -// This file requires #define use due to random() and srandom() // For details on compatibility and glibc support, // Refer http://www.gnu.org/software/libc/manual/html_node/BSD-Random.html #define _DEFAULT_SOURCE @@ -41,11 +40,7 @@ #include "logger.h" #include "oic_malloc.h" #include "oic_string.h" - -// ARM GCC compiler doesnt define srandom function. -#if defined(ARDUINO) && !defined(ARDUINO_ARCH_SAM) -#define HAVE_SRANDOM 1 -#endif +#include "ocrandom.h" #define TAG "CA_PRTCL_MSG" @@ -65,8 +60,6 @@ static const char COAP_URI_HEADER[] = "coap://[::]/"; -static unsigned int SEED = 0; - CAResult_t CAGetRequestInfoFromPDU(const coap_pdu_t *pdu, const CAEndpoint_t *endpoint, CARequestInfo_t *outReqInfo) { @@ -1041,26 +1034,6 @@ CAResult_t CAGenerateTokenInternal(CAToken_t *token, uint8_t tokenLength) return CA_STATUS_INVALID_PARAM; } - if (SEED == 0) - { -#ifdef ARDUINO - SEED = now(); -#else - SEED = time(NULL); -#endif - if (SEED == (unsigned int)((time_t)-1)) - { - OIC_LOG(ERROR, TAG, "seed is not made"); - SEED = 0; - return CA_STATUS_FAILED; - } -#if HAVE_SRANDOM - srandom(SEED); -#else - srand(SEED); -#endif - } - // memory allocation char *temp = (char *) OICCalloc(tokenLength, sizeof(char)); if (NULL == temp) @@ -1069,16 +1042,7 @@ CAResult_t CAGenerateTokenInternal(CAToken_t *token, uint8_t tokenLength) return CA_MEMORY_ALLOC_FAILED; } - // set random byte - for (uint8_t index = 0; index < tokenLength; index++) - { - // use valid characters -#ifdef ARDUINO - temp[index] = rand() & 0x00FF; -#else - temp[index] = random() & 0x00FF; -#endif - } + OCFillRandomMem((uint8_t *)temp, tokenLength); // save token *token = temp; diff --git a/resource/csdk/doc/Doxyfile b/resource/csdk/doc/Doxyfile index a95101f..5b6b38b 100644 --- a/resource/csdk/doc/Doxyfile +++ b/resource/csdk/doc/Doxyfile @@ -662,7 +662,7 @@ WARN_LOGFILE = INPUT = . \ ../stack/include \ ../ocsocket/include \ - ../ocrandom/include \ + ../../c_common/ocrandom/include \ ../occoap/include \ # This tag can be used to specify the character encoding of the source files diff --git a/resource/csdk/routing/SConscript b/resource/csdk/routing/SConscript index d3d68ba..1d2a067 100644 --- a/resource/csdk/routing/SConscript +++ b/resource/csdk/routing/SConscript @@ -18,7 +18,7 @@ if env.get('ROUTING') == 'GW': os.path.join(Dir('.').abspath, './../stack/include/internal'), os.path.join(Dir('.').abspath, './../logger'), os.path.join(Dir('.').abspath, './../../oc_logger/include'), - os.path.join(Dir('.').abspath, './../ocrandom/include'), + os.path.join(Dir('.').abspath, './../../c_common/ocrandom/include'), os.path.join(Dir('.').abspath, './../connectivity/api'), os.path.join(Dir('.').abspath, './../connectivity/common/inc'), os.path.join(Dir('.').abspath, './../security/include'), diff --git a/resource/csdk/security/SConscript b/resource/csdk/security/SConscript index 6d83044..4dcb4c2 100755 --- a/resource/csdk/security/SConscript +++ b/resource/csdk/security/SConscript @@ -42,7 +42,7 @@ libocsrm_env.PrependUnique(CPPPATH = [ '../../../extlibs/cjson/', '../../../extlibs/tinydtls/', '../logger/include', - '../ocrandom/include', + '../../c_common/ocrandom/include', '../stack/include', '../stack/include/internal', '../../oc_logger/include', diff --git a/resource/csdk/security/provisioning/SConscript b/resource/csdk/security/provisioning/SConscript index 65d7855..06cd5bb 100644 --- a/resource/csdk/security/provisioning/SConscript +++ b/resource/csdk/security/provisioning/SConscript @@ -30,7 +30,7 @@ root_dir = './../../../../' provisioning_env.AppendUnique(CPPPATH = [ '../../stack/include', '../../stack/include/internal', - '../../ocrandom/include', + '../../../c_common/ocrandom/include', '../../logger/include', '../../../oc_logger/include', '../../ocmalloc/include', diff --git a/resource/csdk/security/provisioning/ck_manager/sample/SConscript b/resource/csdk/security/provisioning/ck_manager/sample/SConscript index f1d251c..b368fe3 100644 --- a/resource/csdk/security/provisioning/ck_manager/sample/SConscript +++ b/resource/csdk/security/provisioning/ck_manager/sample/SConscript @@ -28,7 +28,7 @@ provisioning_env = env.Clone() ###################################################################### provisioning_env.AppendUnique(CPPPATH = [ '../../../../stack/include', - '../../../../ocrandom/include', + '../../../../../c_common/ocrandom/include', '../../../../logger/include', '../../../../security/include', '../../../../../oc_logger/include', diff --git a/resource/csdk/stack/src/ocstack.c b/resource/csdk/stack/src/ocstack.c index 3224ace..f977f09 100755 --- a/resource/csdk/stack/src/ocstack.c +++ b/resource/csdk/stack/src/ocstack.c @@ -1880,7 +1880,6 @@ OCStackResult OCInit1(OCMode mode, OCTransportFlags serverFlags, OCTransportFlag defaultDeviceHandler = NULL; defaultDeviceHandlerCallbackParameter = NULL; - OCSeedRandom(); result = CAResultToOCResult(CAInitialize()); VERIFY_SUCCESS(result, OC_STACK_OK); diff --git a/resource/csdk/stack/test/SConscript b/resource/csdk/stack/test/SConscript index 6654610..507f011 100644 --- a/resource/csdk/stack/test/SConscript +++ b/resource/csdk/stack/test/SConscript @@ -32,7 +32,7 @@ stacktest_env.PrependUnique(CPPPATH = [ '../../security/include', '../../ocsocket/include', '../../logger/include', - '../../ocrandom/include', + '../../../c_common/ocrandom/include', '../../stack/include', '../../stack/include/internal', '../../connectivity/api', diff --git a/resource/examples/SConscript b/resource/examples/SConscript index 731b203..ffb284a 100644 --- a/resource/examples/SConscript +++ b/resource/examples/SConscript @@ -34,7 +34,7 @@ examples_env = lib_env.Clone() examples_env.AppendUnique(CPPPATH = [ '../include/', '../csdk/stack/include', - '../csdk/ocrandom/include', + '../c_common/ocrandom/include', '../csdk/logger/include', '../oc_logger/include' ]) diff --git a/resource/src/SConscript b/resource/src/SConscript index df2f209..b3d92ca 100644 --- a/resource/src/SConscript +++ b/resource/src/SConscript @@ -34,7 +34,7 @@ oclib_env = lib_env.Clone() oclib_env.AppendUnique(CPPPATH = [ '../include/', '../csdk/stack/include', - '../csdk/ocrandom/include', + '../c_common/ocrandom/include', '../csdk/logger/include', '../oc_logger/include', '../csdk/connectivity/lib/libcoap-4.1.1' diff --git a/resource/unit_tests.scons b/resource/unit_tests.scons index 06e50c1..08a9ffb 100644 --- a/resource/unit_tests.scons +++ b/resource/unit_tests.scons @@ -42,10 +42,10 @@ if target_os == 'linux': SConscript('c_common/oic_string/test/SConscript') SConscript('c_common/oic_malloc/test/SConscript') SConscript('c_common/oic_time/test/SConscript') + SConscript('c_common/ocrandom/test/SConscript') # Build C unit tests SConscript('csdk/stack/test/SConscript') - SConscript('csdk/ocrandom/test/SConscript') SConscript('csdk/connectivity/test/SConscript') diff --git a/resource/unittests/SConscript b/resource/unittests/SConscript index 0506303..65b0921 100644 --- a/resource/unittests/SConscript +++ b/resource/unittests/SConscript @@ -36,7 +36,7 @@ unittests_env.PrependUnique(CPPPATH = [ '../csdk/connectivity/api', '../csdk/connectivity/external/inc', '../csdk/ocsocket/include', - '../csdk/ocrandom/include', + '../c_common/ocrandom/include', '../csdk/logger/include', '#extlibs/gtest/gtest-1.7.0/include', '#extlibs/hippomocks-master/HippoMocks', diff --git a/service/simulator/SConscript b/service/simulator/SConscript index b77e5dc..061df52 100755 --- a/service/simulator/SConscript +++ b/service/simulator/SConscript @@ -40,7 +40,7 @@ simulator_env.AppendUnique(CPPPATH = ['inc', 'src/client', 'src/server', 'src/co simulator_env.AppendUnique(CPPPATH = [ '../../resource/include/', '../../resource/csdk/stack/include', - '../../resource/csdk/ocrandom/include', + '../../resource/c_common/ocrandom/include', '../../resource/csdk/logger/include', '../../resource/oc_logger/include', './ramlparser/raml', @@ -86,4 +86,4 @@ simulator_env.InstallTarget(simulatorsdk, 'libSimulator') #Build sample application SConscript('examples/server/SConscript') -SConscript('examples/client/SConscript') \ No newline at end of file +SConscript('examples/client/SConscript') diff --git a/service/third_party_libs.scons b/service/third_party_libs.scons index 6ddeebc..208ec68 100644 --- a/service/third_party_libs.scons +++ b/service/third_party_libs.scons @@ -67,7 +67,7 @@ lib_env.AppendUnique(CPPPATH = [ resource_path + '/include' , resource_path + '/oc_logger/include', resource_path + '/csdk/stack/include', - resource_path + '/csdk/ocrandom/include', + resource_path + '/c_common/ocrandom/include', resource_path + '/csdk/logger/include' ]) diff --git a/tools/darwin/mkfwk_ios.sh b/tools/darwin/mkfwk_ios.sh index fb1d23e..27c7dd4 100755 --- a/tools/darwin/mkfwk_ios.sh +++ b/tools/darwin/mkfwk_ios.sh @@ -84,7 +84,7 @@ find $OUTDIR/objs -name "*.o" | xargs rm echo "Framework: Copying includes..." cp -r resource/csdk/stack/include/*.h $FRAMEWORK_BUNDLE/Headers cp -r resource/csdk/ocsocket/include/*.h $FRAMEWORK_BUNDLE/Headers -cp -r resource/csdk/ocrandom/include/*.h $FRAMEWORK_BUNDLE/Headers +cp -r resource/c_common/ocrandom/include/*.h $FRAMEWORK_BUNDLE/Headers cp -r resource/csdk/ocmalloc/include/*.h $FRAMEWORK_BUNDLE/Headers echo "Framework: Creating plist..." diff --git a/tools/darwin/mkfwk_osx.sh b/tools/darwin/mkfwk_osx.sh index 9fa2e0a..45a0f74 100755 --- a/tools/darwin/mkfwk_osx.sh +++ b/tools/darwin/mkfwk_osx.sh @@ -85,7 +85,7 @@ find $OUTDIR/objs -name "*.o" | xargs rm echo "Framework: Copying includes..." cp -r resource/csdk/stack/include/*.h $FRAMEWORK_BUNDLE/Headers -cp -r resource/csdk/ocrandom/include/*.h $FRAMEWORK_BUNDLE/Headers +cp -r resource/c_common/ocrandom/include/*.h $FRAMEWORK_BUNDLE/Headers cp -r resource/csdk/ocmalloc/include/*.h $FRAMEWORK_BUNDLE/Headers echo "Framework: Creating plist..." diff --git a/tools/tizen/iotivity.spec b/tools/tizen/iotivity.spec index 6c6fc22..2fba7c4 100755 --- a/tools/tizen/iotivity.spec +++ b/tools/tizen/iotivity.spec @@ -130,7 +130,7 @@ cp out/tizen/*/%{build_mode}/lib*.so %{buildroot}%{_libdir} cp resource/csdk/stack/include/*.h %{buildroot}%{_includedir} cp resource/csdk/logger/include/*.h %{buildroot}%{_includedir} -cp resource/csdk/ocrandom/include/*.h %{buildroot}%{_includedir} +cp resource/c_common/ocrandom/include/*.h %{buildroot}%{_includedir} cp -r resource/oc_logger/include/* %{buildroot}%{_includedir} cp resource/include/*.h %{buildroot}%{_includedir} -- 2.7.4