diff --git a/library/platform_util.c b/library/platform_util.c
index 24c7b41..bd8585d 100644
--- a/library/platform_util.c
+++ b/library/platform_util.c
@@ -96,7 +96,7 @@
 void *mbedtls_platform_memset( void *ptr, int value, size_t num )
 {
     /* Randomize start offset. */
-    size_t start_offset = (size_t) mbedtls_platform_random_in_range( num );
+    size_t start_offset = (size_t) mbedtls_platform_random_in_range( (uint32_t) num );
     /* Randomize data */
     uint32_t data = mbedtls_platform_random_in_range( 256 );
 
@@ -113,7 +113,7 @@
 void *mbedtls_platform_memcpy( void *dst, const void *src, size_t num )
 {
     /* Randomize start offset. */
-    size_t start_offset = (size_t) mbedtls_platform_random_in_range( num );
+    size_t start_offset = (size_t) mbedtls_platform_random_in_range( (uint32_t) num );
     /* Randomize initial data to prevent leakage while copying */
     uint32_t data = mbedtls_platform_random_in_range( 256 );
 
@@ -152,7 +152,7 @@
 
     /* Start from a random location and check the correct number of iterations */
     size_t i, flow_counter = 0;
-    size_t start_offset = (size_t) mbedtls_platform_random_in_range( num );
+    size_t start_offset = (size_t) mbedtls_platform_random_in_range( (uint32_t) num );
 
     for( i = start_offset; i < num; i++ )
     {
@@ -186,7 +186,7 @@
 #endif
 }
 
-uint32_t mbedtls_platform_random_in_range( size_t num )
+uint32_t mbedtls_platform_random_in_range( uint32_t num )
 {
 #if !defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
     (void) num;
@@ -216,7 +216,7 @@
 #if !defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
     return;
 #else
-    size_t rn_1, rn_2, rn_3;
+    uint32_t rn_1, rn_2, rn_3;
     volatile size_t i = 0;
     uint8_t shift;
 
@@ -232,9 +232,9 @@
          * of its behaviour */
         shift = rn_2 & 0x07;
         if ( i % 2 )
-            rn_2 = (uint32_t)( rn_2 >> shift | rn_2 << ( 32 - shift ) );
+            rn_2 = ( rn_2 >> shift ) | ( rn_2 << ( 32 - shift ) );
         else
-            rn_3 = (uint32_t)( rn_3 << shift | rn_3 >> ( 32 - shift ) );
+            rn_3 = ( rn_3 << shift ) | ( rn_3 >> ( 32 - shift ) );
         rn_2 ^= rn_3;
     } while( i < rn_1 || rn_2 == 0 || rn_3 == 0 );
 
