diff --git a/library/platform_util.c b/library/platform_util.c
index f901769..062aa3e 100644
--- a/library/platform_util.c
+++ b/library/platform_util.c
@@ -135,8 +135,8 @@
 }
 #endif /* MBEDTLS_HAVE_TIME_DATE && MBEDTLS_PLATFORM_GMTIME_R_ALT */
 
-unsigned char * mbedtls_platform_put_uint32_be( unsigned char *buf,
-                                                unsigned long num)
+unsigned char* mbedtls_platform_put_uint32_be( unsigned char *buf,
+                                               uint32_t num )
 {
     *buf++ = (unsigned char) ( num >> 24 );
     *buf++ = (unsigned char) ( num >> 16 );
@@ -146,8 +146,8 @@
     return buf;
 }
 
-unsigned char * mbedtls_platform_put_uint24_be( unsigned char *buf,
-                                                unsigned long num )
+unsigned char* mbedtls_platform_put_uint24_be( unsigned char *buf,
+                                               uint32_t num )
 {
     *buf++ = (unsigned char) ( num >> 16 );
     *buf++ = (unsigned char) ( num >> 8  );
@@ -156,8 +156,8 @@
     return buf;
 }
 
-unsigned char * mbedtls_platform_put_uint16_be( unsigned char *buf,
-                                                unsigned long num )
+unsigned char* mbedtls_platform_put_uint16_be( unsigned char *buf,
+                                               uint32_t num )
 {
     *buf++ = (unsigned char) ( num >> 8 );
     *buf++ = (unsigned char) ( num      );
@@ -165,7 +165,7 @@
     return buf;
 }
 
-unsigned int mbedtls_platform_get_uint32_be( const unsigned char *buf )
+uint32_t mbedtls_platform_get_uint32_be( const unsigned char *buf )
 {
     return ( ( (unsigned int) buf[0] << 24 ) |
              ( (unsigned int) buf[1] << 16 ) |
@@ -173,14 +173,14 @@
              ( (unsigned int) buf[3]       ) );
 }
 
-unsigned int mbedtls_platform_get_uint24_be( const unsigned char *buf )
+uint32_t mbedtls_platform_get_uint24_be( const unsigned char *buf )
 {
     return ( ( buf[0] << 16 ) |
              ( buf[1] <<  8)  |
              ( buf[2]      ) );
 }
 
-unsigned short mbedtls_platform_get_uint16_be( const unsigned char *buf )
+uint16_t mbedtls_platform_get_uint16_be( const unsigned char *buf )
 {
     return ( ( buf[0] << 8 )  |
              ( buf[1]      ) );
