Make iotivity compile in a way usable by windows store apps
authorDave Thaler <dthaler@microsoft.com>
Fri, 30 Sep 2016 23:12:55 +0000 (16:12 -0700)
committerDave Thaler <dthaler@microsoft.com>
Mon, 3 Oct 2016 16:16:35 +0000 (16:16 +0000)
Replace GetTickCount with GetTickCount64
Replace CryptGenRandom with BCryptGenRandom

Change-Id: I867f1325d576e52c10466abd7620802351b743c5
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/12701
Reviewed-by: Kevin Kane <kkane@microsoft.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Soemin Tjong <stjong@microsoft.com>
Reviewed-by: David Antler <david.a.antler@intel.com>
extlibs/tinydtls/SConscript
extlibs/tinydtls/dtls_time.c
extlibs/tinydtls/ecc/ecc.c
resource/csdk/SConscript
resource/csdk/connectivity/test/SConscript
resource/csdk/security/provisioning/unittest/SConscript
resource/csdk/security/unittest/SConscript
resource/csdk/stack/test/SConscript
resource/unittests/SConscript

index 0d1bf93..82aafeb 100644 (file)
@@ -91,7 +91,7 @@ if not env.get('RELEASE'):
        samples_env.PrependUnique(LIBS = ['tinydtls'])
 
        if target_os in ['windows', 'msys_nt']:
-               samples_env.AppendUnique(LIBS = ['ws2_32', 'iphlpapi', 'advapi32'])
+               samples_env.AppendUnique(LIBS = ['ws2_32', 'iphlpapi', 'advapi32', 'bcrypt'])
 
        Alias("samples", [dtlsserver, dtlsclient])
 
index 3018091..39a1c8d 100644 (file)
@@ -57,7 +57,7 @@ void
 dtls_clock_init(void) {
 #ifdef _WIN32
   /* Use clock offset in milliseconds */
-  dtls_clock_offset = GetTickCount();
+  dtls_clock_offset = GetTickCount64();
 #else
 #ifdef HAVE_TIME_H
   /* Use clock offset in seconds */
@@ -75,7 +75,7 @@ dtls_clock_init(void) {
 
 void dtls_ticks(dtls_tick_t *t) {
 #ifdef _WIN32
-  *t = ((GetTickCount() - dtls_clock_offset) * DTLS_TICKS_PER_SECOND / 1000);
+  *t = ((GetTickCount64() - dtls_clock_offset) * DTLS_TICKS_PER_SECOND / 1000);
 #else
 #ifdef HAVE_SYS_TIME_H
   struct timeval tv;
index 3de525f..4c2b532 100644 (file)
@@ -334,19 +334,15 @@ int uECC_get_pubkey_impl(const uint8_t p_key_handle[uECC_BYTES], uint8_t p_publi
 
 #define WIN32_LEAN_AND_MEAN
 #include <windows.h>
-#include <wincrypt.h>
+#include <bcrypt.h>
 
 static int default_RNG(uint8_t *p_dest, unsigned p_size)
 {
-    HCRYPTPROV l_prov;
-    if(!CryptAcquireContext(&l_prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
+    if (!BCRYPT_SUCCESS(BCryptGenRandom(NULL, (PUCHAR)p_dest, p_size, BCRYPT_USE_SYSTEM_PREFERRED_RNG)))
     {
         return 0;
     }
 
-    CryptGenRandom(l_prov, p_size, (BYTE *)p_dest);
-    CryptReleaseContext(l_prov, 0);
-
     return 1;
 }
 
index ac8d0c0..0e0022e 100644 (file)
@@ -118,7 +118,7 @@ if target_os in ['windows', 'msys_nt']:
        else:
                liboctbstack_env.Textfile(target = 'octbstack.def', source = [File('octbstack_product.def')])
 
-       liboctbstack_env.AppendUnique(LIBS = ['ws2_32', 'advapi32', 'iphlpapi'])
+       liboctbstack_env.AppendUnique(LIBS = ['ws2_32', 'advapi32', 'iphlpapi', 'bcrypt'])
 else:
        liboctbstack_env.AppendUnique(LIBS = ['m'])
 
index 5e9a0a2..e0d4376 100644 (file)
@@ -60,6 +60,7 @@ if catest_env.get('LOGGING'):
 if target_os in ['msys_nt', 'windows']:
        catest_env.AppendUnique(LIBS = ['ws2_32',
                                         'advapi32',
+                                        'bcrypt',
                                         'iphlpapi'])
 else:
        catest_env.AppendUnique(LIBS = ['m'])
index 1a941a4..bc28e0b 100644 (file)
@@ -86,6 +86,7 @@ if not sptest_env.get('RELEASE'):
 if target_os in ['msys_nt', 'windows']:
     sptest_env.AppendUnique(LIBS = ['ws2_32',
                                     'advapi32',
+                                    'bcrypt',
                                     'iphlpapi'])
 
 ######################################################################
index 739e747..242e93c 100644 (file)
@@ -71,7 +71,7 @@ if srmtest_env.get('LOGGING') == '1':
        srmtest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
 
 if target_os == 'windows':
-       srmtest_env.AppendUnique(LIBS = ['advapi32', 'kernel32', 'ws2_32', 'iphlpapi'])
+       srmtest_env.AppendUnique(LIBS = ['advapi32', 'bcrypt', 'kernel32', 'ws2_32', 'iphlpapi'])
 else:
        # TODO: Implement feature check.
        srmtest_env.AppendUnique(CPPDEFINES = ['HAVE_LOCALTIME_R'])
index 6be264a..45b218e 100644 (file)
@@ -60,7 +60,7 @@ if stacktest_env.get('LOGGING'):
        stacktest_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
 
 if target_os in ['msys_nt', 'windows']:
-       stacktest_env.AppendUnique(LIBS = ['ws2_32', 'iphlpapi', 'kernel32', 'advapi32'])
+       stacktest_env.AppendUnique(LIBS = ['ws2_32', 'iphlpapi', 'kernel32', 'bcrypt', 'advapi32'])
 else:
        stacktest_env.PrependUnique(LIBS = ['m'])
 
index 4fe642a..04c9043 100644 (file)
@@ -47,7 +47,7 @@ unittests_env.PrependUnique(CPPPATH = [
                ])
 
 if target_os in ['windows']:
-       unittests_env.AppendUnique(LIBS = ['ws2_32', 'advapi32', 'iphlpapi'])
+       unittests_env.AppendUnique(LIBS = ['ws2_32', 'advapi32', 'iphlpapi', 'bcrypt'])
        unittests_env.AppendUnique(CPPPATH = ['#extlibs/boost/boost'])
 
 if unittests_env.get('SECURED') == '1':