diff --git a/library/cipher.c b/library/cipher.c
index 4e97bf1..43fec90 100644
--- a/library/cipher.c
+++ b/library/cipher.c
@@ -50,11 +50,6 @@
 #define MBEDTLS_CIPHER_MODE_STREAM
 #endif
 
-#if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
-    !defined(EFI32)
-#define strcasecmp _stricmp
-#endif
-
 /* Implementation that should never be optimized out by the compiler */
 static void mbedtls_zeroize( void *v, size_t n ) {
     volatile unsigned char *p = v; while( n-- ) *p++ = 0;
@@ -102,7 +97,7 @@
         return( NULL );
 
     for( def = mbedtls_cipher_definitions; def->info != NULL; def++ )
-        if( !  strcasecmp( def->info->name, cipher_name ) )
+        if( !  strcmp( def->info->name, cipher_name ) )
             return( def->info );
 
     return( NULL );
diff --git a/library/ecp.c b/library/ecp.c
index 8f289f0..31197ce 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -63,11 +63,6 @@
 #define mbedtls_free       free
 #endif
 
-#if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
-    !defined(EFI32)
-#define strcasecmp _stricmp
-#endif
-
 #if defined(_MSC_VER) && !defined(inline)
 #define inline _inline
 #else
@@ -254,7 +249,7 @@
          curve_info->grp_id != MBEDTLS_ECP_DP_NONE;
          curve_info++ )
     {
-        if( strcasecmp( curve_info->name, name ) == 0 )
+        if( strcmp( curve_info->name, name ) == 0 )
             return( curve_info );
     }
 
diff --git a/library/md.c b/library/md.c
index 737059a..381ffc4 100644
--- a/library/md.c
+++ b/library/md.c
@@ -101,35 +101,35 @@
 
     /* Get the appropriate digest information */
 #if defined(MBEDTLS_MD2_C)
-    if( !strcasecmp( "MD2", md_name ) )
+    if( !strcmp( "MD2", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_MD2 );
 #endif
 #if defined(MBEDTLS_MD4_C)
-    if( !strcasecmp( "MD4", md_name ) )
+    if( !strcmp( "MD4", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_MD4 );
 #endif
 #if defined(MBEDTLS_MD5_C)
-    if( !strcasecmp( "MD5", md_name ) )
+    if( !strcmp( "MD5", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_MD5 );
 #endif
 #if defined(MBEDTLS_RIPEMD160_C)
-    if( !strcasecmp( "RIPEMD160", md_name ) )
+    if( !strcmp( "RIPEMD160", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_RIPEMD160 );
 #endif
 #if defined(MBEDTLS_SHA1_C)
-    if( !strcasecmp( "SHA1", md_name ) || !strcasecmp( "SHA", md_name ) )
+    if( !strcmp( "SHA1", md_name ) || !strcmp( "SHA", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_SHA1 );
 #endif
 #if defined(MBEDTLS_SHA256_C)
-    if( !strcasecmp( "SHA224", md_name ) )
+    if( !strcmp( "SHA224", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_SHA224 );
-    if( !strcasecmp( "SHA256", md_name ) )
+    if( !strcmp( "SHA256", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_SHA256 );
 #endif
 #if defined(MBEDTLS_SHA512_C)
-    if( !strcasecmp( "SHA384", md_name ) )
+    if( !strcmp( "SHA384", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_SHA384 );
-    if( !strcasecmp( "SHA512", md_name ) )
+    if( !strcmp( "SHA512", md_name ) )
         return mbedtls_md_info_from_type( MBEDTLS_MD_SHA512 );
 #endif
     return( NULL );
diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c
index f5e02a0..fa36aa8 100644
--- a/library/ssl_ciphersuites.c
+++ b/library/ssl_ciphersuites.c
@@ -36,11 +36,6 @@
 // #include <stdlib.h>
 #include <string.h>
 
-#if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
-    !defined(EFI32)
-#define strcasecmp _stricmp
-#endif
-
 /*
  * Ordered from most preferred to least preferred in terms of security.
  *
@@ -1733,7 +1728,7 @@
 
     while( cur->id != 0 )
     {
-        if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
+        if( 0 == strcmp( cur->name, ciphersuite_name ) )
             return( cur );
 
         cur++;
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 29dcf94..443b421 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -55,11 +55,6 @@
 #define mbedtls_free       free
 #endif
 
-#if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
-    !defined(EFI32)
-#define strcasecmp _stricmp
-#endif
-
 /* Implementation that should never be optimized out by the compiler */
 static void mbedtls_zeroize( void *v, size_t n ) {
     volatile unsigned char *p = v; while( n-- ) *p++ = 0;
diff --git a/library/version_features.c b/library/version_features.c
index d910b60..e534b32 100644
--- a/library/version_features.c
+++ b/library/version_features.c
@@ -32,11 +32,6 @@
 
 #include <string.h>
 
-#if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
-    !defined(EFI32)
-#define strcasecmp _stricmp
-#endif
-
 static const char *features[] = {
 #if defined(MBEDTLS_VERSION_FEATURES)
 #if defined(MBEDTLS_HAVE_ASM)
@@ -625,7 +620,7 @@
 
     while( *idx != NULL )
     {
-        if( !strcasecmp( *idx, feature ) )
+        if( !strcmp( *idx, feature ) )
             return( 0 );
         idx++;
     }
diff --git a/library/x509_create.c b/library/x509_create.c
index 9066642..ed8c577 100644
--- a/library/x509_create.c
+++ b/library/x509_create.c
@@ -34,11 +34,6 @@
 
 #include <string.h>
 
-#if defined(_MSC_VER) && !defined strncasecmp && !defined(EFIX64) && \
-    !defined(EFI32)
-#define strncasecmp _strnicmp
-#endif
-
 typedef struct {
     const char *name;
     size_t name_len;
@@ -86,7 +81,7 @@
 
     for( cur = x509_attrs; cur->name != NULL; cur++ )
         if( cur->name_len == name_len &&
-            strncasecmp( cur->name, name, name_len ) == 0 )
+            strncmp( cur->name, name, name_len ) == 0 )
             break;
 
     return( cur->oid );
