IOT-1381 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>
Tue, 4 Oct 2016 00:54:16 +0000 (00:54 +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>
Reviewed-on: https://gerrit.iotivity.org/gerrit/12727

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

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 8fbbfae..c493183 100644 (file)
@@ -126,7 +126,7 @@ if target_os in ['windows', 'msys_nt']:
        else:
                liboctbstack_env.Textfile(target = 'octbstack.def', source = [File('octbstack_not_secured.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 0dc19e0..27dfedc 100644 (file)
@@ -62,6 +62,7 @@ if target_os in ['msys_nt', 'windows']:
        catest_env.AppendUnique(LINKFLAGS = ['/subsystem:CONSOLE'])
        catest_env.AppendUnique(LIBS = ['ws2_32',
                                         'advapi32',
+                                        'bcrypt',
                                         'iphlpapi'])
 else:
        catest_env.AppendUnique(LIBS = ['m'])
index 7818df5..4195220 100644 (file)
@@ -87,6 +87,7 @@ if target_os in ['msys_nt', 'windows']:
     sptest_env.AppendUnique(LINKFLAGS = ['/subsystem:CONSOLE'])
     sptest_env.AppendUnique(LIBS = ['ws2_32',
                                     'advapi32',
+                                    'bcrypt',
                                     'iphlpapi'])
 
 ######################################################################
index a2399b0..b1c9570 100644 (file)
@@ -72,7 +72,7 @@ if srmtest_env.get('LOGGING') == '1':
 
 if target_os == 'windows':
        srmtest_env.AppendUnique(LINKFLAGS = ['/subsystem:CONSOLE'])
-       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'])