Remove support for HAVE_INT8 and HAVE_INT16
diff --git a/ChangeLog b/ChangeLog
index 40adc69..e3afb19 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,8 @@
     to override the whole module.
 
 API Changes
+   * Configuration options POLARSSL_HAVE_INT8 and POLARSSL_HAVE_INT16 have
+     been removed (compiler is required to support 32-bit operations).
    * Configuration option POLARSSL_HAVE_IPV6 was removed (always enabled).
    * All public identifiers moved to the mbedtls_* or MBEDTLS_* namespace.
    * ecdsa_write_signature() gained an addtional md_alg argument and
diff --git a/include/mbedtls/bignum.h b/include/mbedtls/bignum.h
index de3b959..68ac65b 100644
--- a/include/mbedtls/bignum.h
+++ b/include/mbedtls/bignum.h
@@ -38,13 +38,6 @@
 
 #if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32)
 #include <basetsd.h>
-#if (_MSC_VER <= 1200)
-typedef   signed short  int16_t;
-typedef unsigned short uint16_t;
-#else
-typedef  INT16  int16_t;
-typedef UINT16 uint16_t;
-#endif
 typedef  INT32  int32_t;
 typedef  INT64  int64_t;
 typedef UINT32 uint32_t;
@@ -118,59 +111,44 @@
 #define MBEDTLS_MPI_RW_BUFFER_SIZE             ( ((MBEDTLS_MPI_MAX_BITS_SCALE100 + MBEDTLS_LN_2_DIV_LN_10_SCALE100 - 1) / MBEDTLS_LN_2_DIV_LN_10_SCALE100) + 10 + 6 )
 
 /*
- * Define the base integer type, architecture-wise
+ * Define the base integer type, architecture-wise.
+ *
+ * 32-bit integers can be forced on 64-bit arches (eg. for testing purposes)
+ * by defining MBEDTLS_HAVE_INT32 and undefining MBEDTLS_HAVE_ASM
  */
-#if defined(MBEDTLS_HAVE_INT8)
-typedef   signed char  mbedtls_mpi_sint;
-typedef unsigned char  mbedtls_mpi_uint;
-typedef uint16_t       mbedtls_t_udbl;
-#define MBEDTLS_HAVE_UDBL
+#if ( ! defined(MBEDTLS_HAVE_INT32) && \
+        defined(_MSC_VER) && defined(_M_AMD64) )
+  #define MBEDTLS_HAVE_INT64
+  typedef  int64_t mbedtls_mpi_sint;
+  typedef uint64_t mbedtls_mpi_uint;
 #else
-#if defined(MBEDTLS_HAVE_INT16)
-typedef  int16_t mbedtls_mpi_sint;
-typedef uint16_t mbedtls_mpi_uint;
-typedef uint32_t mbedtls_t_udbl;
-#define MBEDTLS_HAVE_UDBL
-#else
-  /*
-   * 32-bit integers can be forced on 64-bit arches (eg. for testing purposes)
-   * by defining MBEDTLS_HAVE_INT32 and undefining MBEDTLS_HAVE_ASM
-   */
-  #if ( ! defined(MBEDTLS_HAVE_INT32) && \
-          defined(_MSC_VER) && defined(_M_AMD64) )
-    #define MBEDTLS_HAVE_INT64
-    typedef  int64_t mbedtls_mpi_sint;
-    typedef uint64_t mbedtls_mpi_uint;
+  #if ( ! defined(MBEDTLS_HAVE_INT32) &&               \
+        defined(__GNUC__) && (                          \
+        defined(__amd64__) || defined(__x86_64__)    || \
+        defined(__ppc64__) || defined(__powerpc64__) || \
+        defined(__ia64__)  || defined(__alpha__)     || \
+        (defined(__sparc__) && defined(__arch64__))  || \
+        defined(__s390x__) || defined(__mips64) ) )
+     #define MBEDTLS_HAVE_INT64
+     typedef  int64_t mbedtls_mpi_sint;
+     typedef uint64_t mbedtls_mpi_uint;
+     typedef unsigned int mbedtls_t_udbl __attribute__((mode(TI)));
+     #define MBEDTLS_HAVE_UDBL
   #else
-    #if ( ! defined(MBEDTLS_HAVE_INT32) &&               \
-          defined(__GNUC__) && (                          \
-          defined(__amd64__) || defined(__x86_64__)    || \
-          defined(__ppc64__) || defined(__powerpc64__) || \
-          defined(__ia64__)  || defined(__alpha__)     || \
-          (defined(__sparc__) && defined(__arch64__))  || \
-          defined(__s390x__) || defined(__mips64) ) )
-       #define MBEDTLS_HAVE_INT64
-       typedef  int64_t mbedtls_mpi_sint;
-       typedef uint64_t mbedtls_mpi_uint;
-       typedef unsigned int mbedtls_t_udbl __attribute__((mode(TI)));
+     #define MBEDTLS_HAVE_INT32
+     typedef  int32_t mbedtls_mpi_sint;
+     typedef uint32_t mbedtls_mpi_uint;
+     #if ( defined(_MSC_VER) && defined(_M_IX86) )
+       typedef uint64_t mbedtls_t_udbl;
        #define MBEDTLS_HAVE_UDBL
-    #else
-       #define MBEDTLS_HAVE_INT32
-       typedef  int32_t mbedtls_mpi_sint;
-       typedef uint32_t mbedtls_mpi_uint;
-       #if ( defined(_MSC_VER) && defined(_M_IX86) )
-         typedef uint64_t mbedtls_t_udbl;
+     #else
+       #if defined( MBEDTLS_HAVE_LONGLONG )
+         typedef unsigned long long mbedtls_t_udbl;
          #define MBEDTLS_HAVE_UDBL
-       #else
-         #if defined( MBEDTLS_HAVE_LONGLONG )
-           typedef unsigned long long mbedtls_t_udbl;
-           #define MBEDTLS_HAVE_UDBL
-         #endif
        #endif
-    #endif /* !MBEDTLS_HAVE_INT32 && __GNUC__ && 64-bit platform */
-  #endif /* !MBEDTLS_HAVE_INT32 && _MSC_VER && _M_AMD64 */
-#endif /* MBEDTLS_HAVE_INT16 */
-#endif /* MBEDTLS_HAVE_INT8  */
+     #endif
+  #endif /* !MBEDTLS_HAVE_INT32 && __GNUC__ && 64-bit platform */
+#endif /* !MBEDTLS_HAVE_INT32 && _MSC_VER && _M_AMD64 */
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/include/mbedtls/compat-1.3.h b/include/mbedtls/compat-1.3.h
index cc06b4a..7b8c3bf 100644
--- a/include/mbedtls/compat-1.3.h
+++ b/include/mbedtls/compat-1.3.h
@@ -240,12 +240,6 @@
 #if defined MBEDTLS_HAVE_ASM
 #define POLARSSL_HAVE_ASM MBEDTLS_HAVE_ASM
 #endif
-#if defined MBEDTLS_HAVE_INT16
-#define POLARSSL_HAVE_INT16 MBEDTLS_HAVE_INT16
-#endif
-#if defined MBEDTLS_HAVE_INT8
-#define POLARSSL_HAVE_INT8 MBEDTLS_HAVE_INT8
-#endif
 #if defined MBEDTLS_HAVE_LONGLONG
 #define POLARSSL_HAVE_LONGLONG MBEDTLS_HAVE_LONGLONG
 #endif
diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h
index 3cd2889..80e50f2 100644
--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
@@ -40,24 +40,6 @@
  */
 
 /**
- * \def MBEDTLS_HAVE_INT8
- *
- * The system uses 8-bit wide native integers.
- *
- * Uncomment if native integers are 8-bit wide.
- */
-//#define MBEDTLS_HAVE_INT8
-
-/**
- * \def MBEDTLS_HAVE_INT16
- *
- * The system uses 16-bit wide native integers.
- *
- * Uncomment if native integers are 16-bit wide.
- */
-//#define MBEDTLS_HAVE_INT16
-
-/**
  * \def MBEDTLS_HAVE_LONGLONG
  *
  * The compiler supports the 'long long' type.
diff --git a/library/ecp_curves.c b/library/ecp_curves.c
index 4cac3ab..9a477e1 100644
--- a/library/ecp_curves.c
+++ b/library/ecp_curves.c
@@ -44,34 +44,7 @@
  * Conversion macros for embedded constants:
  * build lists of mbedtls_mpi_uint's from lists of unsigned char's grouped by 8, 4 or 2
  */
-#if defined(MBEDTLS_HAVE_INT8)
-
-#define BYTES_TO_T_UINT_8( a, b, c, d, e, f, g, h ) \
-    a, b, c, d, e, f, g, h
-
-#define BYTES_TO_T_UINT_4( a, b, c, d )             \
-    a, b, c, d
-
-#define BYTES_TO_T_UINT_2( a, b )                   \
-    a, b
-
-#elif defined(MBEDTLS_HAVE_INT16)
-
-#define BYTES_TO_T_UINT_2( a, b )                   \
-    ( (mbedtls_mpi_uint) a << 0 ) |                           \
-    ( (mbedtls_mpi_uint) b << 8 )
-
-#define BYTES_TO_T_UINT_4( a, b, c, d )             \
-    BYTES_TO_T_UINT_2( a, b ),                      \
-    BYTES_TO_T_UINT_2( c, d )
-
-#define BYTES_TO_T_UINT_8( a, b, c, d, e, f, g, h ) \
-    BYTES_TO_T_UINT_2( a, b ),                      \
-    BYTES_TO_T_UINT_2( c, d ),                      \
-    BYTES_TO_T_UINT_2( e, f ),                      \
-    BYTES_TO_T_UINT_2( g, h )
-
-#elif defined(MBEDTLS_HAVE_INT32)
+#if defined(MBEDTLS_HAVE_INT32)
 
 #define BYTES_TO_T_UINT_4( a, b, c, d )             \
     ( (mbedtls_mpi_uint) a <<  0 ) |                          \
@@ -907,26 +880,7 @@
  */
 #define LOAD32      cur = A( i );
 
-#if defined(MBEDTLS_HAVE_INT8)     /* 8 bit */
-
-#define MAX32       N->n / 4
-#define A( j )      (uint32_t)( N->p[4*j+0]       ) |  \
-                              ( N->p[4*j+1] << 8  ) |  \
-                              ( N->p[4*j+2] << 16 ) |  \
-                              ( N->p[4*j+3] << 24 )
-#define STORE32     N->p[4*i+0] = (mbedtls_mpi_uint)( cur       );   \
-                    N->p[4*i+1] = (mbedtls_mpi_uint)( cur >> 8  );   \
-                    N->p[4*i+2] = (mbedtls_mpi_uint)( cur >> 16 );   \
-                    N->p[4*i+3] = (mbedtls_mpi_uint)( cur >> 24 );
-
-#elif defined(MBEDTLS_HAVE_INT16)  /* 16 bit */
-
-#define MAX32       N->n / 2
-#define A( j )      (uint32_t)( N->p[2*j] ) | ( N->p[2*j+1] << 16 )
-#define STORE32     N->p[2*i+0] = (mbedtls_mpi_uint)( cur       );  \
-                    N->p[2*i+1] = (mbedtls_mpi_uint)( cur >> 16 );
-
-#elif defined(MBEDTLS_HAVE_INT32)  /* 32 bit */
+#if defined(MBEDTLS_HAVE_INT32)  /* 32 bit */
 
 #define MAX32       N->n
 #define A( j )      N->p[j]
@@ -1155,11 +1109,7 @@
 #define P521_WIDTH      ( 521 / 8 / sizeof( mbedtls_mpi_uint ) + 1 )
 
 /* Bits to keep in the most significant mbedtls_mpi_uint */
-#if defined(MBEDTLS_HAVE_INT8)
-#define P521_MASK       0x01
-#else
 #define P521_MASK       0x01FF
-#endif
 
 /*
  * Fast quasi-reduction modulo p521 (FIPS 186-3 D.2.5)
diff --git a/library/version_features.c b/library/version_features.c
index bc3a370..855174c 100644
--- a/library/version_features.c
+++ b/library/version_features.c
@@ -39,12 +39,6 @@
 
 static const char *features[] = {
 #if defined(MBEDTLS_VERSION_FEATURES)
-#if defined(MBEDTLS_HAVE_INT8)
-    "MBEDTLS_HAVE_INT8",
-#endif /* MBEDTLS_HAVE_INT8 */
-#if defined(MBEDTLS_HAVE_INT16)
-    "MBEDTLS_HAVE_INT16",
-#endif /* MBEDTLS_HAVE_INT16 */
 #if defined(MBEDTLS_HAVE_LONGLONG)
     "MBEDTLS_HAVE_LONGLONG",
 #endif /* MBEDTLS_HAVE_LONGLONG */
diff --git a/scripts/config.pl b/scripts/config.pl
index 79f5eed..7d6c4ea 100755
--- a/scripts/config.pl
+++ b/scripts/config.pl
@@ -19,8 +19,6 @@
 #   respective tests were adapted
 my @excluded = qw(
 MBEDTLS_DEPRECATED_REMOVED
-MBEDTLS_HAVE_INT8
-MBEDTLS_HAVE_INT16
 MBEDTLS_HAVE_SSE2
 MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
 MBEDTLS_ECP_DP_M221_ENABLED