diff --git a/library/x509parse.c b/library/x509parse.c
index 9d1846b..727227b 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -1495,7 +1495,7 @@
     return( ret );
 }
 
-#if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_DES_C) && defined(POLARSSL_MD5_C)
 /*
  * Read a 16-byte hex string and convert it to binary
  */
@@ -1569,7 +1569,12 @@
     int ret, len, enc;
     unsigned char *s1, *s2;
     unsigned char *p, *end;
+#if defined(POLARSSL_DES_C) && defined(POLARSSL_MD5_C)
     unsigned char des3_iv[8];
+#else
+    ((void) pwd);
+    ((void) pwdlen);
+#endif
 
     s1 = (unsigned char *) strstr( (char *) buf,
         "-----BEGIN RSA PRIVATE KEY-----" );
@@ -1591,7 +1596,7 @@
 
         if( memcmp( s1, "Proc-Type: 4,ENCRYPTED", 22 ) == 0 )
         {
-#if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_DES_C) && defined(POLARSSL_MD5_C)
             enc++;
 
             s1 += 22;
@@ -1634,7 +1639,7 @@
 
         if( enc != 0 )
         {
-#if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_DES_C) && defined(POLARSSL_MD5_C)
             if( pwd == NULL )
             {
                 free( buf );
@@ -2126,6 +2131,11 @@
     return( 0 );
 }
 
+/*
+ * Wrapper for x509 hashes.
+ *
+ * @param out   Buffer to receive the hash (Should be at least 64 bytes)
+ */
 static void x509_hash( unsigned char *in, int len, int alg,
                        unsigned char *out )
 {
@@ -2137,8 +2147,12 @@
 #if defined(POLARSSL_MD4_C)
         case SIG_RSA_MD4    :  md4( in, len, out ); break;
 #endif
+#if defined(POLARSSL_MD5_C)
         case SIG_RSA_MD5    :  md5( in, len, out ); break;
+#endif
+#if defined(POLARSSL_SHA1_C)
         case SIG_RSA_SHA1   : sha1( in, len, out ); break;
+#endif
 #if defined(POLARSSL_SHA2_C)
         case SIG_RSA_SHA224 : sha2( in, len, out, 1 ); break;
         case SIG_RSA_SHA256 : sha2( in, len, out, 0 ); break;
@@ -2148,7 +2162,7 @@
         case SIG_RSA_SHA512 : sha4( in, len, out, 0 ); break;
 #endif
         default:
-            memset( out, '\xFF', len );
+            memset( out, '\xFF', 64 );
             break;
     }
 }
@@ -2447,6 +2461,7 @@
  */
 int x509_self_test( int verbose )
 {
+#if defined(POLARSSL_MD5_C)
     int ret, i, j;
     x509_cert cacert;
     x509_cert clicert;
@@ -2515,6 +2530,10 @@
     rsa_free( &rsa );
 
     return( 0 );
+#else
+    ((void) verbose);
+    return( POLARSSL_ERR_X509_FEATURE_UNAVAILABLE );
+#endif
 }
 
 #endif
