diff --git a/library/platform_util.c b/library/platform_util.c
index 756e226..f901769 100644
--- a/library/platform_util.c
+++ b/library/platform_util.c
@@ -134,3 +134,54 @@
 #endif /* _WIN32 && !EFIX64 && !EFI32 */
 }
 #endif /* MBEDTLS_HAVE_TIME_DATE && MBEDTLS_PLATFORM_GMTIME_R_ALT */
+
+unsigned char * mbedtls_platform_put_uint32_be( unsigned char *buf,
+                                                unsigned long num)
+{
+    *buf++ = (unsigned char) ( num >> 24 );
+    *buf++ = (unsigned char) ( num >> 16 );
+    *buf++ = (unsigned char) ( num >> 8  );
+    *buf++ = (unsigned char) ( num       );
+
+    return buf;
+}
+
+unsigned char * mbedtls_platform_put_uint24_be( unsigned char *buf,
+                                                unsigned long num )
+{
+    *buf++ = (unsigned char) ( num >> 16 );
+    *buf++ = (unsigned char) ( num >> 8  );
+    *buf++ = (unsigned char) ( num       );
+
+    return buf;
+}
+
+unsigned char * mbedtls_platform_put_uint16_be( unsigned char *buf,
+                                                unsigned long num )
+{
+    *buf++ = (unsigned char) ( num >> 8 );
+    *buf++ = (unsigned char) ( num      );
+
+    return buf;
+}
+
+unsigned int mbedtls_platform_get_uint32_be( const unsigned char *buf )
+{
+    return ( ( (unsigned int) buf[0] << 24 ) |
+             ( (unsigned int) buf[1] << 16 ) |
+             ( (unsigned int) buf[2] <<  8 ) |
+             ( (unsigned int) buf[3]       ) );
+}
+
+unsigned int 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 )
+{
+    return ( ( buf[0] << 8 )  |
+             ( buf[1]      ) );
+}
