Merged CBC-as-an-option changes into development
diff --git a/include/polarssl/aes.h b/include/polarssl/aes.h
index 16721dd..27ba373 100644
--- a/include/polarssl/aes.h
+++ b/include/polarssl/aes.h
@@ -100,6 +100,7 @@
                     const unsigned char input[16],
                     unsigned char output[16] );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /**
  * \brief          AES-CBC buffer encryption/decryption
  *                 Length should be a multiple of the block
@@ -120,6 +121,7 @@
                     unsigned char iv[16],
                     const unsigned char *input,
                     unsigned char *output );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 /**
  * \brief          AES-CFB128 buffer encryption/decryption.
diff --git a/include/polarssl/blowfish.h b/include/polarssl/blowfish.h
index a2cbd46..f8d79c5 100644
--- a/include/polarssl/blowfish.h
+++ b/include/polarssl/blowfish.h
@@ -92,6 +92,7 @@
                         const unsigned char input[BLOWFISH_BLOCKSIZE],
                         unsigned char output[BLOWFISH_BLOCKSIZE] );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /**
  * \brief          Blowfish-CBC buffer encryption/decryption
  *                 Length should be a multiple of the block
@@ -112,7 +113,9 @@
                         unsigned char iv[BLOWFISH_BLOCKSIZE],
                         const unsigned char *input,
                         unsigned char *output );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
+#if defined(POLARSSL_CIPHER_MODE_CFB)
 /**
  * \brief          Blowfish CFB buffer encryption/decryption.
  *
@@ -133,7 +136,9 @@
                           unsigned char iv[BLOWFISH_BLOCKSIZE],
                           const unsigned char *input,
                           unsigned char *output );
+#endif /*POLARSSL_CIPHER_MODE_CFB */
 
+#if defined(POLARSSL_CIPHER_MODE_CTR)
 /**
  * \brief               Blowfish-CTR buffer encryption/decryption
  *
@@ -159,6 +164,7 @@
                         unsigned char stream_block[BLOWFISH_BLOCKSIZE],
                         const unsigned char *input,
                         unsigned char *output );
+#endif /* POLARSSL_CIPHER_MODE_CTR */
 
 #ifdef __cplusplus
 }
diff --git a/include/polarssl/camellia.h b/include/polarssl/camellia.h
index 86e2125..4ce10dc 100644
--- a/include/polarssl/camellia.h
+++ b/include/polarssl/camellia.h
@@ -99,6 +99,7 @@
                     const unsigned char input[16],
                     unsigned char output[16] );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /**
  * \brief          CAMELLIA-CBC buffer encryption/decryption
  *                 Length should be a multiple of the block
@@ -119,7 +120,9 @@
                     unsigned char iv[16],
                     const unsigned char *input,
                     unsigned char *output );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
+#if defined(POLARSSL_CIPHER_MODE_CFB)
 /**
  * \brief          CAMELLIA-CFB128 buffer encryption/decryption
  *
@@ -144,7 +147,9 @@
                        unsigned char iv[16],
                        const unsigned char *input,
                        unsigned char *output );
+#endif /* POLARSSL_CIPHER_MODE_CFB */
 
+#if defined(POLARSSL_CIPHER_MODE_CTR)
 /**
  * \brief               CAMELLIA-CTR buffer encryption/decryption
  *
@@ -174,6 +179,7 @@
                        unsigned char stream_block[16],
                        const unsigned char *input,
                        unsigned char *output );
+#endif /* POLARSSL_CIPHER_MODE_CTR */
 
 #ifdef __cplusplus
 }
diff --git a/include/polarssl/cipher.h b/include/polarssl/cipher.h
index e5bde35..5789f77 100644
--- a/include/polarssl/cipher.h
+++ b/include/polarssl/cipher.h
@@ -36,6 +36,10 @@
 #define POLARSSL_CIPHER_MODE_AEAD
 #endif
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
+#define POLARSSL_CIPHER_MODE_WITH_PADDING
+#endif
+
 #include <string.h>
 
 #if defined(_MSC_VER) && !defined(inline)
@@ -462,6 +466,7 @@
 int cipher_setkey( cipher_context_t *ctx, const unsigned char *key, int key_length,
         const operation_t operation );
 
+#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
 /**
  * \brief               Set padding mode, for cipher modes that use padding.
  *                      (Default: PKCS7 padding.)
@@ -475,6 +480,7 @@
  *                      does not support padding.
  */
 int cipher_set_padding_mode( cipher_context_t *ctx, cipher_padding_t mode );
+#endif /* POLARSSL_CIPHER_MODE_WITH_PADDING */
 
 /**
  * \brief               Set the initialization vector (IV) or nonce
diff --git a/include/polarssl/cipher_wrap.h b/include/polarssl/cipher_wrap.h
index 9c26a10..fcd226f 100644
--- a/include/polarssl/cipher_wrap.h
+++ b/include/polarssl/cipher_wrap.h
@@ -42,9 +42,11 @@
 extern const cipher_info_t aes_192_ecb_info;
 extern const cipher_info_t aes_256_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 extern const cipher_info_t aes_128_cbc_info;
 extern const cipher_info_t aes_192_cbc_info;
 extern const cipher_info_t aes_256_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 extern const cipher_info_t aes_128_cfb128_info;
@@ -72,9 +74,11 @@
 extern const cipher_info_t camellia_192_ecb_info;
 extern const cipher_info_t camellia_256_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 extern const cipher_info_t camellia_128_cbc_info;
 extern const cipher_info_t camellia_192_cbc_info;
 extern const cipher_info_t camellia_256_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 extern const cipher_info_t camellia_128_cfb128_info;
@@ -96,15 +100,19 @@
 extern const cipher_info_t des_ede_ecb_info;
 extern const cipher_info_t des_ede3_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 extern const cipher_info_t des_cbc_info;
 extern const cipher_info_t des_ede_cbc_info;
 extern const cipher_info_t des_ede3_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #endif /* defined(POLARSSL_DES_C) */
 
 #if defined(POLARSSL_BLOWFISH_C)
 extern const cipher_info_t blowfish_ecb_info;
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 extern const cipher_info_t blowfish_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 extern const cipher_info_t blowfish_cfb64_info;
diff --git a/include/polarssl/config.h b/include/polarssl/config.h
index e738dee..f75d94d 100644
--- a/include/polarssl/config.h
+++ b/include/polarssl/config.h
@@ -153,6 +153,13 @@
  */
 
 /**
+ * \def POLARSSL_CIPHER_MODE_CBC
+ *
+ * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
+ */
+#define POLARSSL_CIPHER_MODE_CBC
+
+/**
  * \def POLARSSL_CIPHER_MODE_CFB
  *
  * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
@@ -626,6 +633,7 @@
  *
  * Requires: POLARSSL_AES_C
  *           POLARSSL_SHA256_C
+ *           POLARSSL_CIPHER_MODE_CBC
  *
  * Comment this macro to disable support for SSL session tickets
  */
@@ -1599,7 +1607,8 @@
 #endif
 
 #if defined(POLARSSL_SSL_SESSION_TICKETS) && defined(POLARSSL_SSL_TLS_C) && \
-    ( !defined(POLARSSL_AES_C) || !defined(POLARSSL_SHA256_C) )
+    ( !defined(POLARSSL_AES_C) || !defined(POLARSSL_SHA256_C) ||            \
+      !defined(POLARSSL_CIPHER_MODE_CBC) )
 #error "POLARSSL_SSL_SESSION_TICKETS_C defined, but not all prerequisites"
 #endif
 
diff --git a/include/polarssl/des.h b/include/polarssl/des.h
index 0dedf62..74d5acb 100644
--- a/include/polarssl/des.h
+++ b/include/polarssl/des.h
@@ -177,6 +177,7 @@
                     const unsigned char input[8],
                     unsigned char output[8] );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /**
  * \brief          DES-CBC buffer encryption/decryption
  *
@@ -193,6 +194,7 @@
                     unsigned char iv[8],
                     const unsigned char *input,
                     unsigned char *output );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 /**
  * \brief          3DES-ECB block encryption/decryption
@@ -207,6 +209,7 @@
                      const unsigned char input[8],
                      unsigned char output[8] );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /**
  * \brief          3DES-CBC buffer encryption/decryption
  *
@@ -225,6 +228,7 @@
                      unsigned char iv[8],
                      const unsigned char *input,
                      unsigned char *output );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #ifdef __cplusplus
 }
diff --git a/include/polarssl/xtea.h b/include/polarssl/xtea.h
index 4b435ae..7521993 100644
--- a/include/polarssl/xtea.h
+++ b/include/polarssl/xtea.h
@@ -83,6 +83,7 @@
                     const unsigned char input[8],
                     unsigned char output[8] );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /**
  * \brief          XTEA CBC cipher function
  *
@@ -102,6 +103,7 @@
                     unsigned char iv[8],
                     const unsigned char *input,
                     unsigned char *output);
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #ifdef __cplusplus
 }
diff --git a/library/aes.c b/library/aes.c
index 6456c54..a3835ce 100644
--- a/library/aes.c
+++ b/library/aes.c
@@ -769,6 +769,7 @@
     return( 0 );
 }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /*
  * AES-CBC buffer encryption/decryption
  */
@@ -832,6 +833,7 @@
 
     return( 0 );
 }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 /*
@@ -947,6 +949,7 @@
       0xFF, 0x30, 0xB4, 0xEA, 0x21, 0x63, 0x6D, 0xA4 }
 };
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 static const unsigned char aes_test_cbc_dec[3][16] =
 {
     { 0xFA, 0xCA, 0x37, 0xE0, 0xB0, 0xC8, 0x53, 0x73,
@@ -966,6 +969,7 @@
     { 0xFE, 0x3C, 0x53, 0x65, 0x3E, 0x2F, 0x45, 0xB5,
       0x6F, 0xCD, 0x88, 0xB2, 0xCC, 0x89, 0x8F, 0xF0 }
 };
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 /*
@@ -1104,8 +1108,10 @@
     int i, j, u, v;
     unsigned char key[32];
     unsigned char buf[64];
-    unsigned char prv[16];
     unsigned char iv[16];
+#if defined(POLARSSL_CIPHER_MODE_CBC)
+    unsigned char prv[16];
+#endif
 #if defined(POLARSSL_CIPHER_MODE_CTR) || defined(POLARSSL_CIPHER_MODE_CFB)
     size_t offset;
 #endif
@@ -1170,6 +1176,7 @@
     if( verbose != 0 )
         printf( "\n" );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     /*
      * CBC mode
      */
@@ -1231,6 +1238,7 @@
 
     if( verbose != 0 )
         printf( "\n" );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
     /*
diff --git a/library/blowfish.c b/library/blowfish.c
index 719aea6..910d610 100644
--- a/library/blowfish.c
+++ b/library/blowfish.c
@@ -233,6 +233,7 @@
     return( 0 );
 }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /*
  * Blowfish-CBC buffer encryption/decryption
  */
@@ -284,6 +285,7 @@
 
     return( 0 );
 }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 /*
diff --git a/library/camellia.c b/library/camellia.c
index bb87875..2366cae 100644
--- a/library/camellia.c
+++ b/library/camellia.c
@@ -523,6 +523,7 @@
     return( 0 );
 }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /*
  * Camellia-CBC buffer encryption/decryption
  */
@@ -574,6 +575,7 @@
 
     return( 0 );
 }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 /*
@@ -732,6 +734,7 @@
     }
 };
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #define CAMELLIA_TESTS_CBC  3
 
 static const unsigned char camellia_test_cbc_key[3][32] =
@@ -793,6 +796,7 @@
           0x33, 0x30, 0xCD, 0xF1, 0xB1, 0x86, 0x0A, 0x83 }
     }
 };
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CTR)
 /*
@@ -867,7 +871,9 @@
     unsigned char buf[64];
     unsigned char src[16];
     unsigned char dst[16];
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     unsigned char iv[16];
+#endif
 #if defined(POLARSSL_CIPHER_MODE_CTR)
     size_t offset, len;
     unsigned char nonce_counter[16];
@@ -917,6 +923,7 @@
     if( verbose != 0 )
         printf( "\n" );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     /*
      * CBC mode
      */
@@ -965,6 +972,7 @@
         if( verbose != 0 )
             printf( "passed\n" );
     }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
     if( verbose != 0 )
         printf( "\n" );
diff --git a/library/cipher.c b/library/cipher.c
index 8fded81..ee2a1cd 100644
--- a/library/cipher.c
+++ b/library/cipher.c
@@ -54,9 +54,12 @@
         POLARSSL_CIPHER_AES_128_ECB,
         POLARSSL_CIPHER_AES_192_ECB,
         POLARSSL_CIPHER_AES_256_ECB,
+
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         POLARSSL_CIPHER_AES_128_CBC,
         POLARSSL_CIPHER_AES_192_CBC,
         POLARSSL_CIPHER_AES_256_CBC,
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         POLARSSL_CIPHER_AES_128_CFB128,
@@ -86,9 +89,12 @@
         POLARSSL_CIPHER_CAMELLIA_128_ECB,
         POLARSSL_CIPHER_CAMELLIA_192_ECB,
         POLARSSL_CIPHER_CAMELLIA_256_ECB,
+
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         POLARSSL_CIPHER_CAMELLIA_128_CBC,
         POLARSSL_CIPHER_CAMELLIA_192_CBC,
         POLARSSL_CIPHER_CAMELLIA_256_CBC,
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         POLARSSL_CIPHER_CAMELLIA_128_CFB128,
@@ -108,14 +114,20 @@
         POLARSSL_CIPHER_DES_ECB,
         POLARSSL_CIPHER_DES_EDE_ECB,
         POLARSSL_CIPHER_DES_EDE3_ECB,
+
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         POLARSSL_CIPHER_DES_CBC,
         POLARSSL_CIPHER_DES_EDE_CBC,
         POLARSSL_CIPHER_DES_EDE3_CBC,
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* defined(POLARSSL_DES_C) */
 
 #if defined(POLARSSL_BLOWFISH_C)
         POLARSSL_CIPHER_BLOWFISH_ECB,
+
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         POLARSSL_CIPHER_BLOWFISH_CBC,
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         POLARSSL_CIPHER_BLOWFISH_CFB64,
@@ -152,12 +164,14 @@
         case POLARSSL_CIPHER_AES_256_ECB:
             return &aes_256_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         case POLARSSL_CIPHER_AES_128_CBC:
             return &aes_128_cbc_info;
         case POLARSSL_CIPHER_AES_192_CBC:
             return &aes_192_cbc_info;
         case POLARSSL_CIPHER_AES_256_CBC:
             return &aes_256_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         case POLARSSL_CIPHER_AES_128_CFB128:
@@ -196,12 +210,14 @@
         case POLARSSL_CIPHER_CAMELLIA_256_ECB:
             return &camellia_256_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         case POLARSSL_CIPHER_CAMELLIA_128_CBC:
             return &camellia_128_cbc_info;
         case POLARSSL_CIPHER_CAMELLIA_192_CBC:
             return &camellia_192_cbc_info;
         case POLARSSL_CIPHER_CAMELLIA_256_CBC:
             return &camellia_256_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         case POLARSSL_CIPHER_CAMELLIA_128_CFB128:
@@ -231,12 +247,14 @@
         case POLARSSL_CIPHER_DES_EDE3_ECB:
             return &des_ede3_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         case POLARSSL_CIPHER_DES_CBC:
             return &des_cbc_info;
         case POLARSSL_CIPHER_DES_EDE_CBC:
             return &des_ede_cbc_info;
         case POLARSSL_CIPHER_DES_EDE3_CBC:
             return &des_ede3_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif
 
 #if defined(POLARSSL_ARC4_C)
@@ -248,8 +266,10 @@
         case POLARSSL_CIPHER_BLOWFISH_ECB:
             return &blowfish_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         case POLARSSL_CIPHER_BLOWFISH_CBC:
             return &blowfish_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         case POLARSSL_CIPHER_BLOWFISH_CFB64:
@@ -280,12 +300,14 @@
 
     /* Get the appropriate cipher information */
 #if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     if( !strcasecmp( "CAMELLIA-128-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_CAMELLIA_128_CBC );
     if( !strcasecmp( "CAMELLIA-192-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_CAMELLIA_192_CBC );
     if( !strcasecmp( "CAMELLIA-256-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_CAMELLIA_256_CBC );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
     if( !strcasecmp( "CAMELLIA-128-CFB128", cipher_name ) )
@@ -307,12 +329,14 @@
 #endif
 
 #if defined(POLARSSL_AES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     if( !strcasecmp( "AES-128-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_AES_128_CBC );
     if( !strcasecmp( "AES-192-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_AES_192_CBC );
     if( !strcasecmp( "AES-256-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_AES_256_CBC );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
     if( !strcasecmp( "AES-128-CFB128", cipher_name ) )
@@ -348,17 +372,21 @@
 #endif
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     if( !strcasecmp( "DES-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_DES_CBC );
     if( !strcasecmp( "DES-EDE-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_DES_EDE_CBC );
     if( !strcasecmp( "DES-EDE3-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_DES_EDE3_CBC );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif
 
 #if defined(POLARSSL_BLOWFISH_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     if( !strcasecmp( "BLOWFISH-CBC", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_BLOWFISH_CBC );
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
     if( !strcasecmp( "BLOWFISH-CFB64", cipher_name ) )
@@ -396,6 +424,7 @@
                 return &aes_256_ecb_info;
         }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         if( mode == POLARSSL_MODE_CBC )
         {
             if( key_length == 128 )
@@ -405,6 +434,7 @@
             if( key_length == 256 )
                 return &aes_256_cbc_info;
         }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         if( mode == POLARSSL_MODE_CFB )
@@ -457,6 +487,7 @@
                 return &camellia_256_ecb_info;
         }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         if( mode == POLARSSL_MODE_CBC )
         {
             if( key_length == 128 )
@@ -466,6 +497,7 @@
             if( key_length == 256 )
                 return &camellia_256_cbc_info;
         }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         if( mode == POLARSSL_MODE_CFB )
@@ -499,8 +531,10 @@
         if( mode == POLARSSL_MODE_ECB )
             return &des_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         if( mode == POLARSSL_MODE_CBC )
             return &des_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
     }
 
     if( cipher_id == POLARSSL_CIPHER_ID_3DES )
@@ -513,6 +547,7 @@
                 return &des_ede3_ecb_info;
         }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         if( mode == POLARSSL_MODE_CBC )
         {
             if( key_length == 128 )
@@ -520,6 +555,7 @@
             if( key_length == 192 )
                 return &des_ede3_cbc_info;
         }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
     }
 #endif
 
@@ -535,8 +571,10 @@
         if( mode == POLARSSL_MODE_ECB )
             return &blowfish_ecb_info;
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
         if( mode == POLARSSL_MODE_CBC )
             return &blowfish_cbc_info;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
         if( mode == POLARSSL_MODE_CFB )
@@ -570,6 +608,7 @@
 
     ctx->cipher_info = cipher_info;
 
+#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
     /*
      * Ignore possible errors caused by a cipher mode that doesn't use padding
      */
@@ -578,6 +617,7 @@
 #else
     (void) cipher_set_padding_mode( ctx, POLARSSL_PADDING_NONE );
 #endif
+#endif /* POLARSSL_CIPHER_MODE_WITH_PADDING */
 
     return 0;
 }
@@ -671,7 +711,6 @@
         unsigned char *output, size_t *olen )
 {
     int ret;
-    size_t copy_len = 0;
 
     *olen = 0;
 
@@ -710,8 +749,11 @@
         return POLARSSL_ERR_CIPHER_BAD_INPUT_DATA;
     }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     if( ctx->cipher_info->mode == POLARSSL_MODE_CBC )
     {
+        size_t copy_len = 0;
+
         /*
          * If there is not enough data for a full block, cache it.
          */
@@ -784,6 +826,7 @@
 
         return 0;
     }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
     if( ctx->cipher_info->mode == POLARSSL_MODE_CFB )
@@ -835,6 +878,7 @@
     return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
 }
 
+#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
 #if defined(POLARSSL_CIPHER_PADDING_PKCS7)
 /*
  * PKCS7 (and PKCS5) padding: fill with ll bytes, with ll = padding_len
@@ -990,12 +1034,11 @@
 
     return 0;
 }
+#endif /* POLARSSL_CIPHER_MODE_WITH_PADDING */
 
 int cipher_finish( cipher_context_t *ctx,
                    unsigned char *output, size_t *olen )
 {
-    int ret = 0;
-
     if( NULL == ctx || NULL == ctx->cipher_info || NULL == olen )
         return POLARSSL_ERR_CIPHER_BAD_INPUT_DATA;
 
@@ -1017,8 +1060,11 @@
         return 0;
     }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     if( POLARSSL_MODE_CBC == ctx->cipher_info->mode )
     {
+        int ret = 0;
+
         if( POLARSSL_ENCRYPT == ctx->operation )
         {
             /* check for 'no padding' mode */
@@ -1062,10 +1108,14 @@
         *olen = cipher_get_block_size( ctx );
         return 0;
     }
+#else
+    ((void) output);
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
     return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
 }
 
+#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
 int cipher_set_padding_mode( cipher_context_t *ctx, cipher_padding_t mode )
 {
     if( NULL == ctx ||
@@ -1111,6 +1161,7 @@
 
     return 0;
 }
+#endif /* POLARSSL_CIPHER_MODE_WITH_PADDING */
 
 #if defined(POLARSSL_CIPHER_MODE_AEAD)
 int cipher_write_tag( cipher_context_t *ctx,
diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c
index c6f52ff..c5abae9 100644
--- a/library/cipher_wrap.c
+++ b/library/cipher_wrap.c
@@ -77,7 +77,18 @@
 static int aes_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
         unsigned char *iv, const unsigned char *input, unsigned char *output )
 {
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     return aes_crypt_cbc( (aes_context *) ctx, operation, length, iv, input, output );
+#else
+    ((void) ctx);
+    ((void) operation);
+    ((void) length);
+    ((void) iv);
+    ((void) input);
+    ((void) output);
+
+    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
 static int aes_crypt_cfb128_wrap( void *ctx, operation_t operation, size_t length,
@@ -184,6 +195,7 @@
     &aes_info
 };
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 const cipher_info_t aes_128_cbc_info = {
     POLARSSL_CIPHER_AES_128_CBC,
     POLARSSL_MODE_CBC,
@@ -216,6 +228,7 @@
     16,
     &aes_info
 };
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 const cipher_info_t aes_128_cfb128_info = {
@@ -365,7 +378,18 @@
 static int camellia_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
         unsigned char *iv, const unsigned char *input, unsigned char *output )
 {
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     return camellia_crypt_cbc( (camellia_context *) ctx, operation, length, iv, input, output );
+#else
+    ((void) ctx);
+    ((void) operation);
+    ((void) length);
+    ((void) iv);
+    ((void) input);
+    ((void) output);
+
+    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
 static int camellia_crypt_cfb128_wrap( void *ctx, operation_t operation, size_t length,
@@ -472,6 +496,7 @@
     &camellia_info
 };
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 const cipher_info_t camellia_128_cbc_info = {
     POLARSSL_CIPHER_CAMELLIA_128_CBC,
     POLARSSL_MODE_CBC,
@@ -504,6 +529,7 @@
     16,
     &camellia_info
 };
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 const cipher_info_t camellia_128_cfb128_info = {
@@ -596,13 +622,35 @@
 static int des_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
         unsigned char *iv, const unsigned char *input, unsigned char *output )
 {
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     return des_crypt_cbc( (des_context *) ctx, operation, length, iv, input, output );
+#else
+    ((void) ctx);
+    ((void) operation);
+    ((void) length);
+    ((void) iv);
+    ((void) input);
+    ((void) output);
+
+    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
 static int des3_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
         unsigned char *iv, const unsigned char *input, unsigned char *output )
 {
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     return des3_crypt_cbc( (des3_context *) ctx, operation, length, iv, input, output );
+#else
+    ((void) ctx);
+    ((void) operation);
+    ((void) length);
+    ((void) iv);
+    ((void) input);
+    ((void) output);
+
+    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
 static int des_crypt_cfb128_wrap( void *ctx, operation_t operation, size_t length,
@@ -715,6 +763,7 @@
     &des_info
 };
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 const cipher_info_t des_cbc_info = {
     POLARSSL_CIPHER_DES_CBC,
     POLARSSL_MODE_CBC,
@@ -725,6 +774,7 @@
     8,
     &des_info
 };
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 const cipher_base_t des_ede_info = {
     POLARSSL_CIPHER_ID_DES,
@@ -750,6 +800,7 @@
     &des_ede_info
 };
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 const cipher_info_t des_ede_cbc_info = {
     POLARSSL_CIPHER_DES_EDE_CBC,
     POLARSSL_MODE_CBC,
@@ -760,6 +811,7 @@
     8,
     &des_ede_info
 };
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 const cipher_base_t des_ede3_info = {
     POLARSSL_CIPHER_ID_DES,
@@ -784,6 +836,7 @@
     8,
     &des_ede3_info
 };
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 const cipher_info_t des_ede3_cbc_info = {
     POLARSSL_CIPHER_DES_EDE3_CBC,
     POLARSSL_MODE_CBC,
@@ -794,6 +847,7 @@
     8,
     &des_ede3_info
 };
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif
 
 #if defined(POLARSSL_BLOWFISH_C)
@@ -807,7 +861,18 @@
 static int blowfish_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
         unsigned char *iv, const unsigned char *input, unsigned char *output )
 {
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     return blowfish_crypt_cbc( (blowfish_context *) ctx, operation, length, iv, input, output );
+#else
+    ((void) ctx);
+    ((void) operation);
+    ((void) length);
+    ((void) iv);
+    ((void) input);
+    ((void) output);
+
+    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 }
 
 static int blowfish_crypt_cfb64_wrap( void *ctx, operation_t operation, size_t length,
@@ -887,6 +952,7 @@
     &blowfish_info
 };
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 const cipher_info_t blowfish_cbc_info = {
     POLARSSL_CIPHER_BLOWFISH_CBC,
     POLARSSL_MODE_CBC,
@@ -897,6 +963,7 @@
     8,
     &blowfish_info
 };
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 const cipher_info_t blowfish_cfb64_info = {
diff --git a/library/des.c b/library/des.c
index 0cf4b3d..153810d 100644
--- a/library/des.c
+++ b/library/des.c
@@ -606,6 +606,7 @@
     return( 0 );
 }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /*
  * DES-CBC buffer encryption/decryption
  */
@@ -657,6 +658,7 @@
 
     return( 0 );
 }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 /*
  * 3DES-ECB block encryption/decryption
@@ -701,6 +703,7 @@
     return( 0 );
 }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /*
  * 3DES-CBC buffer encryption/decryption
  */
@@ -752,6 +755,7 @@
 
     return( 0 );
 }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
 #endif /* !POLARSSL_DES_ALT */
 
@@ -819,8 +823,10 @@
     des3_context ctx3;
     unsigned char key[24];
     unsigned char buf[8];
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     unsigned char prv[8];
     unsigned char iv[8];
+#endif
 
     memset( key, 0, 24 );
 
@@ -895,6 +901,7 @@
     if( verbose != 0 )
         printf( "\n" );
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     /*
      * CBC mode
      */
@@ -985,6 +992,7 @@
         if( verbose != 0 )
             printf( "passed\n" );
     }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 
     if( verbose != 0 )
         printf( "\n" );
diff --git a/library/pem.c b/library/pem.c
index 3f6d330..8a6de3a 100644
--- a/library/pem.c
+++ b/library/pem.c
@@ -48,7 +48,8 @@
     memset( ctx, 0, sizeof( pem_context ) );
 }
 
-#if defined(POLARSSL_MD5_C) && (defined(POLARSSL_DES_C) || defined(POLARSSL_AES_C))
+#if defined(POLARSSL_MD5_C) && defined(POLARSSL_CIPHER_MODE_CBC) &&         \
+    ( defined(POLARSSL_DES_C) || defined(POLARSSL_AES_C) )
 /*
  * Read a 16-byte hex string and convert it to binary
  */
@@ -183,7 +184,8 @@
 }
 #endif /* POLARSSL_AES_C */
 
-#endif /* POLARSSL_MD5_C && (POLARSSL_AES_C || POLARSSL_DES_C) */
+#endif /* POLARSSL_MD5_C && POLARSSL_CIPHER_MODE_CBC &&
+          ( POLARSSL_AES_C || POLARSSL_DES_C ) */
 
 int pem_read_buffer( pem_context *ctx, const char *header, const char *footer,
                      const unsigned char *data, const unsigned char *pwd,
@@ -193,13 +195,15 @@
     size_t len;
     unsigned char *buf;
     const unsigned char *s1, *s2, *end;
-#if defined(POLARSSL_MD5_C) && (defined(POLARSSL_DES_C) || defined(POLARSSL_AES_C))
+#if defined(POLARSSL_MD5_C) && defined(POLARSSL_CIPHER_MODE_CBC) &&         \
+    ( defined(POLARSSL_DES_C) || defined(POLARSSL_AES_C) )
     unsigned char pem_iv[16];
     cipher_type_t enc_alg = POLARSSL_CIPHER_NONE;
 #else
     ((void) pwd);
     ((void) pwdlen);
-#endif /* POLARSSL_MD5_C && (POLARSSL_AES_C || POLARSSL_DES_C) */
+#endif /* POLARSSL_MD5_C && POLARSSL_CIPHER_MODE_CBC &&
+          ( POLARSSL_AES_C || POLARSSL_DES_C ) */
 
     if( ctx == NULL )
         return( POLARSSL_ERR_PEM_BAD_INPUT_DATA );
@@ -229,7 +233,8 @@
 
     if( memcmp( s1, "Proc-Type: 4,ENCRYPTED", 22 ) == 0 )
     {
-#if defined(POLARSSL_MD5_C) && (defined(POLARSSL_DES_C) || defined(POLARSSL_AES_C))
+#if defined(POLARSSL_MD5_C) && defined(POLARSSL_CIPHER_MODE_CBC) &&         \
+    ( defined(POLARSSL_DES_C) || defined(POLARSSL_AES_C) )
         enc++;
 
         s1 += 22;
@@ -289,7 +294,8 @@
         else return( POLARSSL_ERR_PEM_INVALID_DATA );
 #else
         return( POLARSSL_ERR_PEM_FEATURE_UNAVAILABLE );
-#endif /* POLARSSL_MD5_C && (POLARSSL_AES_C || POLARSSL_DES_C) */
+#endif /* POLARSSL_MD5_C && POLARSSL_CIPHER_MODE_CBC &&
+          ( POLARSSL_AES_C || POLARSSL_DES_C ) */
     }
 
     len = 0;
@@ -309,7 +315,8 @@
     
     if( enc != 0 )
     {
-#if defined(POLARSSL_MD5_C) && (defined(POLARSSL_DES_C) || defined(POLARSSL_AES_C))
+#if defined(POLARSSL_MD5_C) && defined(POLARSSL_CIPHER_MODE_CBC) &&         \
+    ( defined(POLARSSL_DES_C) || defined(POLARSSL_AES_C) )
         if( pwd == NULL )
         {
             polarssl_free( buf );
@@ -346,7 +353,8 @@
 #else
         polarssl_free( buf );
         return( POLARSSL_ERR_PEM_FEATURE_UNAVAILABLE );
-#endif
+#endif /* POLARSSL_MD5_C && POLARSSL_CIPHER_MODE_CBC &&
+          ( POLARSSL_AES_C || POLARSSL_DES_C ) */
     }
 
     ctx->buf = buf;
diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c
index fdd7348..4e8a53d 100644
--- a/library/ssl_ciphersuites.c
+++ b/library/ssl_ciphersuites.c
@@ -168,6 +168,7 @@
 {
 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
 #if defined(POLARSSL_AES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
@@ -178,12 +179,15 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #if defined(POLARSSL_SHA256_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #if defined(POLARSSL_GCM_C)
     { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
@@ -193,11 +197,13 @@
 #endif /* POLARSSL_GCM_C */
 #endif /* POLARSSL_SHA256_C */
 #if defined(POLARSSL_SHA512_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #if defined(POLARSSL_GCM_C)
     { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
@@ -209,6 +215,7 @@
 #endif /* POLARSSL_AES_C */
 
 #if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
@@ -223,14 +230,17 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
 #endif /* POLARSSL_SHA512_C */
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_CAMELLIA_C */
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_DES_C */
 
 #if defined(POLARSSL_ARC4_C)
@@ -252,6 +262,7 @@
 
 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
 #if defined(POLARSSL_AES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
@@ -262,12 +273,15 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #if defined(POLARSSL_SHA256_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #if defined(POLARSSL_GCM_C)
     { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
@@ -277,11 +291,13 @@
 #endif /* POLARSSL_GCM_C */
 #endif /* POLARSSL_SHA256_C */
 #if defined(POLARSSL_SHA512_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #if defined(POLARSSL_GCM_C)
     { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
@@ -293,6 +309,7 @@
 #endif /* POLARSSL_AES_C */
 
 #if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
@@ -307,14 +324,17 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
 #endif /* POLARSSL_SHA512_C */
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_CAMELLIA_C */
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_EC },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_DES_C */
 
 #if defined(POLARSSL_ARC4_C)
@@ -353,6 +373,7 @@
       0 },
 #endif /* POLARSSL_GCM_C */
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
@@ -364,8 +385,10 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_SHA256_C */
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
@@ -377,9 +400,11 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_AES_C */
 
 #if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
@@ -405,14 +430,17 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_CAMELLIA_C */
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_DES_C */
 #endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
 
@@ -435,6 +463,7 @@
       0 },
 #endif /* POLARSSL_GCM_C */
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
@@ -446,8 +475,10 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_SHA256_C */
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
@@ -459,9 +490,11 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_AES_C */
 
 #if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
@@ -487,14 +520,17 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_CAMELLIA_C */
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_DES_C */
 
 #if defined(POLARSSL_ARC4_C)
@@ -532,6 +568,7 @@
 #endif /* POLARSSL_SHA512_C */
 #endif /* POLARSSL_GCM_C */
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
@@ -559,9 +596,11 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_AES_C */
 
 #if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
@@ -577,14 +616,17 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
 #endif /* POLARSSL_SHA512_C */
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_CAMELLIA_C */
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_DES_C */
 
 #if defined(POLARSSL_ARC4_C)
@@ -616,6 +658,7 @@
 #endif /* POLARSSL_SHA512_C */
 #endif /* POLARSSL_GCM_C */
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
@@ -643,9 +686,11 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_AES_C */
 
 #if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
@@ -661,14 +706,17 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
 #endif /* POLARSSL_SHA512_C */
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_CAMELLIA_C */
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_DES_C */
 
 #if defined(POLARSSL_ARC4_C)
@@ -700,6 +748,7 @@
 #endif /* POLARSSL_SHA512_C */
 #endif /* POLARSSL_GCM_C */
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
@@ -727,9 +776,11 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_AES_C */
 
 #if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_SHA256_C)
     { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
@@ -745,14 +796,17 @@
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
 #endif /* POLARSSL_SHA512_C */
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_CAMELLIA_C */
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       0 },
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_DES_C */
 
 #if defined(POLARSSL_ARC4_C)
@@ -812,6 +866,7 @@
 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
 
 #if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 #if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
     { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
       POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
@@ -820,11 +875,14 @@
       POLARSSL_CIPHERSUITE_WEAK },
 #endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
 
+#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
     { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
       POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
       POLARSSL_CIPHERSUITE_WEAK },
+#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* POLARSSL_DES_C */
 #endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
 
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 910205e..208e69b 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -672,6 +672,7 @@
                 return( ret );
             }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
             if( cipher_info->mode == POLARSSL_MODE_CBC )
             {
                 if( ( ret = cipher_set_padding_mode( &transform->cipher_ctx_enc,
@@ -688,6 +689,7 @@
                     return( ret );
                 }
             }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
             break;
 
         case POLARSSL_CIPHER_NULL:
@@ -871,7 +873,7 @@
  */
 static int ssl_encrypt_buf( ssl_context *ssl )
 {
-    size_t i, padlen;
+    size_t i;
 
     SSL_DEBUG_MSG( 2, ( "=> encrypt buf" ) );
 
@@ -914,17 +916,16 @@
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
     if( ssl->transform_out->ciphersuite_info->cipher == POLARSSL_CIPHER_NULL )
     {
-        padlen = 0;
+        ; /* Nothing to do */
     }
     else
 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
+#if defined(POLARSSL_ARC4_C)
     if( ssl->transform_out->ciphersuite_info->cipher == POLARSSL_CIPHER_ARC4_128 )
     {
         int ret;
         size_t olen = 0;
 
-        padlen = 0;
-
         SSL_DEBUG_MSG( 3, ( "before encrypt: msglen = %d, "
                             "including %d bytes of padding",
                        ssl->out_msglen, 0 ) );
@@ -978,6 +979,7 @@
         }
     }
     else
+#endif /* POLARSSL_ARC4_C */
 #if defined(POLARSSL_GCM_C)
     if( ssl->transform_out->ciphersuite_info->cipher == POLARSSL_CIPHER_AES_128_GCM ||
         ssl->transform_out->ciphersuite_info->cipher == POLARSSL_CIPHER_AES_256_GCM )
@@ -987,7 +989,6 @@
         unsigned char add_data[13];
         int ret = POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE;
 
-        padlen = 0;
         enc_msglen = ssl->out_msglen;
 
         memcpy( add_data, ssl->out_ctr, 8 );
@@ -1084,11 +1085,13 @@
     }
     else
 #endif /* POLARSSL_GCM_C */
+#if defined(POLARSSL_CIPHER_MODE_CBC)
+    if( ssl->transform_out->cipher_ctx_enc.cipher_info->mode ==
+                                                        POLARSSL_MODE_CBC )
     {
         int ret;
         unsigned char *enc_msg;
-        size_t enc_msglen;
-        size_t olen = 0;
+        size_t enc_msglen, padlen, olen = 0;
 
         padlen = ssl->transform_out->ivlen - ( ssl->out_msglen + 1 ) %
                  ssl->transform_out->ivlen;
@@ -1188,6 +1191,12 @@
         }
 #endif
     }
+    else
+#endif /* POLARSSL_CIPHER_MODE_CBC */
+    {
+        SSL_DEBUG_MSG( 1, ( "should never happen" ) );
+        return( POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE );
+    }
 
     for( i = 8; i > 0; i-- )
         if( ++ssl->out_ctr[i - 1] != 0 )
@@ -1362,6 +1371,9 @@
     }
     else
 #endif /* POLARSSL_GCM_C */
+#if defined(POLARSSL_CIPHER_MODE_CBC)
+    if( ssl->transform_in->cipher_ctx_dec.cipher_info->mode ==
+                                                       POLARSSL_MODE_CBC )
     {
         /*
          * Decrypt and check the padding
@@ -1524,6 +1536,12 @@
             return( POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE );
         }
     }
+    else
+#endif /* POLARSSL_CIPHER_MODE_CBC */
+    {
+        SSL_DEBUG_MSG( 1, ( "should never happen" ) );
+        return( POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE );
+    }
 
     SSL_DEBUG_BUF( 4, "raw buffer after decryption",
                    ssl->in_msg, ssl->in_msglen );
diff --git a/library/x509parse.c b/library/x509parse.c
index d606615..f5e8688 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -4270,7 +4270,6 @@
 #if defined(POLARSSL_CERTS_C) && defined(POLARSSL_MD5_C)
     int ret;
     int flags;
-    size_t i, j;
     x509_cert cacert;
     x509_cert clicert;
     pk_context pkey;
@@ -4305,23 +4304,25 @@
         return( ret );
     }
 
+#if defined(POLARSSL_MD5_C) && defined(POLARSSL_CIPHER_MODE_CBC) &&         \
+    defined(POLARSSL_DES_C) && defined(POLARSSL_AES_C)
     if( verbose != 0 )
         printf( "passed\n  X.509 private key load: " );
 
-    i = strlen( test_ca_key );
-    j = strlen( test_ca_pwd );
-
     pk_init( &pkey );
 
     if( ( ret = x509parse_key( &pkey,
-                    (const unsigned char *) test_ca_key, i,
-                    (const unsigned char *) test_ca_pwd, j ) ) != 0 )
+                               (const unsigned char *) test_ca_key,
+                               strlen( test_ca_key ),
+                               (const unsigned char *) test_ca_pwd,
+                               strlen( test_ca_pwd ) ) ) != 0 )
     {
         if( verbose != 0 )
             printf( "failed\n" );
 
         return( ret );
     }
+#endif
 
     if( verbose != 0 )
         printf( "passed\n  X.509 signature verify: ");
@@ -4341,10 +4342,8 @@
     if( verbose != 0 )
         printf( "passed\n  X.509 DHM parameter load: " );
 
-    i = strlen( test_dhm_params );
-    j = strlen( test_ca_pwd );
-
-    if( ( ret = x509parse_dhm( &dhm, (const unsigned char *) test_dhm_params, i ) ) != 0 )
+    if( ( ret = x509parse_dhm( &dhm, (const unsigned char *) test_dhm_params,
+                                     strlen( test_dhm_params ) ) ) != 0 )
     {
         if( verbose != 0 )
             printf( "failed\n" );
diff --git a/library/xtea.c b/library/xtea.c
index 9404927..2cb2f30 100644
--- a/library/xtea.c
+++ b/library/xtea.c
@@ -111,6 +111,7 @@
     return( 0 );
 }
 
+#if defined(POLARSSL_CIPHER_MODE_CBC)
 /*
  * XTEA-CBC buffer encryption/decryption
  */
@@ -159,6 +160,7 @@
 
     return( 0 );
 }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #endif /* !POLARSSL_XTEA_ALT */
 
 #if defined(POLARSSL_SELF_TEST)
diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c
index baf7f4f..52aecf2 100644
--- a/programs/test/benchmark.c
+++ b/programs/test/benchmark.c
@@ -98,20 +98,22 @@
 #if defined(POLARSSL_ARC4_C)
     arc4_context arc4;
 #endif
-#if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_DES_C) && defined(POLARSSL_CIPHER_MODE_CBC)
     des3_context des3;
     des_context des;
 #endif
 #if defined(POLARSSL_AES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     aes_context aes;
+#endif
 #if defined(POLARSSL_GCM_C)
     gcm_context gcm;
 #endif
 #endif
-#if defined(POLARSSL_BLOWFISH_C)
+#if defined(POLARSSL_BLOWFISH_C) && defined(POLARSSL_CIPHER_MODE_CBC)
     blowfish_context blowfish;
 #endif
-#if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CAMELLIA_C) && defined(POLARSSL_CIPHER_MODE_CBC)
     camellia_context camellia;
 #endif
 #if defined(POLARSSL_RSA_C) && defined(POLARSSL_BIGNUM_C) &&    \
@@ -233,7 +235,7 @@
                     ( hardclock() - tsc ) / ( j * BUFSIZE ) );
 #endif
 
-#if defined(POLARSSL_DES_C)
+#if defined(POLARSSL_DES_C) && defined(POLARSSL_CIPHER_MODE_CBC)
     printf( HEADER_FORMAT, "3DES" );
     fflush( stdout );
 
@@ -268,6 +270,7 @@
 #endif
 
 #if defined(POLARSSL_AES_C)
+#if defined(POLARSSL_CIPHER_MODE_CBC)
     for( keysize = 128; keysize <= 256; keysize += 64 )
     {
         printf( "  AES-CBC-%d     :  ", keysize );
@@ -289,6 +292,7 @@
         printf( "%9lu Kb/s,  %9lu cycles/byte\n", i * BUFSIZE / 1024,
                         ( hardclock() - tsc ) / ( j * BUFSIZE ) );
     }
+#endif /* POLARSSL_CIPHER_MODE_CBC */
 #if defined(POLARSSL_GCM_C)
     for( keysize = 128; keysize <= 256; keysize += 64 )
     {
@@ -314,7 +318,7 @@
 #endif
 #endif
 
-#if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_CAMELLIA_C) && defined(POLARSSL_CIPHER_MODE_CBC)
     for( keysize = 128; keysize <= 256; keysize += 64 )
     {
         printf( "  CAMELLIA-CBC-%d:  ", keysize );
@@ -338,7 +342,7 @@
     }
 #endif
 
-#if defined(POLARSSL_BLOWFISH_C)
+#if defined(POLARSSL_BLOWFISH_C) && defined(POLARSSL_CIPHER_MODE_CBC)
     for( keysize = 128; keysize <= 256; keysize += 64 )
     {
         printf( "  BLOWFISH-CBC-%d:  ", keysize );
diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function
index 747abf1..f679350 100644
--- a/tests/suites/test_suite_aes.function
+++ b/tests/suites/test_suite_aes.function
@@ -67,7 +67,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void aes_encrypt_cbc( char *hex_key_string, char *hex_iv_string,
                       char *hex_src_string, char *hex_dst_string,
                       int cbc_result )
@@ -101,7 +101,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void aes_decrypt_cbc( char *hex_key_string, char *hex_iv_string,
                       char *hex_src_string, char *hex_dst_string,
                       int cbc_result )
diff --git a/tests/suites/test_suite_blowfish.function b/tests/suites/test_suite_blowfish.function
index 6bdcb65..edfd306 100644
--- a/tests/suites/test_suite_blowfish.function
+++ b/tests/suites/test_suite_blowfish.function
@@ -67,7 +67,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void blowfish_encrypt_cbc( char *hex_key_string, char *hex_iv_string,
                            char *hex_src_string, char *hex_dst_string,
                            int cbc_result )
@@ -102,7 +102,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void blowfish_decrypt_cbc( char *hex_key_string, char *hex_iv_string,
                            char *hex_src_string, char *hex_dst_string,
                            int cbc_result )
diff --git a/tests/suites/test_suite_camellia.function b/tests/suites/test_suite_camellia.function
index a219e7a..50c42a6 100644
--- a/tests/suites/test_suite_camellia.function
+++ b/tests/suites/test_suite_camellia.function
@@ -67,7 +67,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void camellia_encrypt_cbc( char *hex_key_string, char *hex_iv_string,
                            char *hex_src_string, char *hex_dst_string,
                            int cbc_result )
@@ -101,7 +101,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void camellia_decrypt_cbc( char *hex_key_string, char *hex_iv_string,
                            char *hex_src_string, char *hex_dst_string,
                            int cbc_result )
diff --git a/tests/suites/test_suite_cipher.aes.data b/tests/suites/test_suite_cipher.aes.data
index 23d4c8c..94da98e 100644
--- a/tests/suites/test_suite_cipher.aes.data
+++ b/tests/suites/test_suite_cipher.aes.data
@@ -1,352 +1,349 @@
-Cipher Selftest
-depends_on:POLARSSL_SELF_TEST
-cipher_selftest:
-
 Decrypt empty buffer
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 dec_empty_buf:
 
 AES Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:0:-1
 
 AES Encrypt and decrypt 1 byte
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:1:-1
 
 AES Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:2:-1
 
 AES Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:7:-1
 
 AES Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:8:-1
 
 AES Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:9:-1
 
 AES Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:15:-1
 
 AES Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:16:-1
 
 AES Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:17:-1
 
 AES Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:31:-1
 
 AES Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:32:-1
 
 AES Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:33:-1
 
 AES Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:47:-1
 
 AES Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:48:-1
 
 AES Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:49:-1
 
 AES Encrypt and decrypt 0 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:0:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 1 byte with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:1:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 2 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:2:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 7 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:7:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 8 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:8:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 9 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:9:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 15 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:15:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 16 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:16:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 17 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:17:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 31 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:31:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 32 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:32:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 33 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:33:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 47 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:47:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 48 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:48:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 49 bytes with one and zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:49:POLARSSL_PADDING_ONE_AND_ZEROS
 
 AES Encrypt and decrypt 0 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:0:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 1 byte with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:1:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 2 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:2:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 7 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:7:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 8 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:8:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 9 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:9:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 15 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:15:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 16 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:16:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 17 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:17:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 31 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:31:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 32 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:32:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 33 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:33:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 47 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:47:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 48 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:48:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 49 bytes with zeros and len padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:49:POLARSSL_PADDING_ZEROS_AND_LEN
 
 AES Encrypt and decrypt 0 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:0:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 1 byte with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:1:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 2 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:2:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 7 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:7:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 8 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:8:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 9 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:9:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 15 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:15:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 16 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:16:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 17 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:17:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 31 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:31:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 32 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:32:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 33 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:33:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 47 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:47:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 48 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:48:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 49 bytes with zeros padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:49:POLARSSL_PADDING_ZEROS
 
 AES Encrypt and decrypt 0 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:0:POLARSSL_PADDING_NONE
 
 AES Encrypt and decrypt 16 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:16:POLARSSL_PADDING_NONE
 
 AES Encrypt and decrypt 32 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:32:POLARSSL_PADDING_NONE
 
 AES Encrypt and decrypt 48 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_128_CBC:"AES-128-CBC":128:48:POLARSSL_PADDING_NONE
 
 AES Try encrypting 1 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:1:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 2 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:2:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 7 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:7:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 8 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:8:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 9 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:9:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 15 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:15:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 17 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:17:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 31 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:31:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 33 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:33:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 47 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:47:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Try encrypting 49 bytes with no padding
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:128:49:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 AES Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:0:0:
 
 AES Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:1:0:
 
 AES Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:0:1:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:16:0:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:0:16:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:1:15:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:15:1:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:15:7:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:16:6:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:17:6:
 
 AES Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CBC:128:16:16:
 
 AES Encrypt and decrypt 0 bytes
@@ -558,227 +555,227 @@
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_128_CTR:128:16:16:
 
 AES Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:0:-1
 
 AES Encrypt and decrypt 1 byte
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:1:-1
 
 AES Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:2:-1
 
 AES Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:7:-1
 
 AES Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:8:-1
 
 AES Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:9:-1
 
 AES Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:15:-1
 
 AES Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:16:-1
 
 AES Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:17:-1
 
 AES Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:31:-1
 
 AES Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:32:-1
 
 AES Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:33:-1
 
 AES Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:47:-1
 
 AES Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:48:-1
 
 AES Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_192_CBC:"AES-192-CBC":192:49:-1
 
 AES Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:0:0:
 
 AES Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:1:0:
 
 AES Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:0:1:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:16:0:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:0:16:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:1:15:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:15:1:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:15:7:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:16:6:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:17:6:
 
 AES Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_192_CBC:192:16:16:
 
 AES Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:0:-1
 
 AES Encrypt and decrypt 1 byte
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:1:-1
 
 AES Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:2:-1
 
 AES Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:7:-1
 
 AES Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:8:-1
 
 AES Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:9:-1
 
 AES Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:15:-1
 
 AES Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:16:-1
 
 AES Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:17:-1
 
 AES Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:31:-1
 
 AES Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:32:-1
 
 AES Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:33:-1
 
 AES Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:47:-1
 
 AES Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:48:-1
 
 AES Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_AES_256_CBC:"AES-256-CBC":256:49:-1
 
 AES Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:0:0:
 
 AES Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:1:0:
 
 AES Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:0:1:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:16:0:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:0:16:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:1:15:
 
 AES Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:15:1:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:15:7:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:16:6:
 
 AES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:17:6:
 
 AES Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_AES_256_CBC:256:16:16:
 
 AES Decrypt test vector #0
-depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_PADDING_PKCS7
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_PADDING_PKCS7:POLARSSL_CIPHER_MODE_CBC
 decrypt_test_vec:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_PKCS7:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"00000000000000000000000000000000":"":"":POLARSSL_ERR_CIPHER_INVALID_PADDING:0
 
 AES Decrypt test vector #1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 decrypt_test_vec:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_NONE:"ffffffffe00000000000000000000000":"00000000000000000000000000000000":"23f710842b9bb9c32f26648c786807ca":"00000000000000000000000000000000":"":"":0:0
 
 AES Decrypt test vector #2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 decrypt_test_vec:POLARSSL_CIPHER_AES_192_CBC:POLARSSL_PADDING_NONE:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"707b1dbb0ffa40ef7d95def421233fae":"fffffffff80000000000000000000000":"":"":0:0
 
 AES Decrypt test vector #3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 decrypt_test_vec:POLARSSL_CIPHER_AES_256_CBC:POLARSSL_PADDING_NONE:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"49af6b372135acef10132e548f217b17":"ff000000000000000000000000000000":"":"":0:0
 
 AES Decrypt test vector #4
@@ -794,309 +791,309 @@
 decrypt_test_vec:POLARSSL_CIPHER_AES_128_CFB128:-1:"ffffffffff800000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"be66cfea2fecd6bf0ec7b4352c99bcaa":"00000000000000000000000000000000":"":"":0:0
 
 AES-128-ECB Encrypt NIST KAT #1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0
 
 AES-128-ECB Encrypt NIST KAT #2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"9798c4640bad75c7c3227db910174e72":"a9a1631bf4996954ebc093957b234589":0
 
 AES-128-ECB Encrypt NIST KAT #3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"96ab5c2ff612d9dfaae8c31f30c42168":"ff4f8391a6a40ca5b25d23bedd44a597":0
 
 AES-128-ECB Encrypt NIST KAT #4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"e0000000000000000000000000000000":"00000000000000000000000000000000":"72a1da770f5d7ac4c9ef94d822affd97":0
 
 AES-128-ECB Encrypt NIST KAT #5
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"f0000000000000000000000000000000":"00000000000000000000000000000000":"970014d634e2b7650777e8e84d03ccd8":0
 
 AES-128-ECB Encrypt NIST KAT #6
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"f8000000000000000000000000000000":"00000000000000000000000000000000":"f17e79aed0db7e279e955b5f493875a7":0
 
 AES-128-ECB Encrypt NIST KAT #7
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"fffffffffffff0000000000000000000":"00000000000000000000000000000000":"7b90785125505fad59b13c186dd66ce3":0
 
 AES-128-ECB Encrypt NIST KAT #8
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"fffffffffffff8000000000000000000":"00000000000000000000000000000000":"8b527a6aebdaec9eaef8eda2cb7783e5":0
 
 AES-128-ECB Encrypt NIST KAT #9
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"fffffffffffffc000000000000000000":"00000000000000000000000000000000":"43fdaf53ebbc9880c228617d6a9b548b":0
 
 AES-128-ECB Encrypt NIST KAT #10
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"ffffffffffffffffffffffffffffc000":"00000000000000000000000000000000":"70c46bb30692be657f7eaa93ebad9897":0
 
 AES-128-ECB Encrypt NIST KAT #11
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"ffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":0
 
 AES-128-ECB Encrypt NIST KAT #12
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"fffffffffffffffffffffffffffff000":"00000000000000000000000000000000":"1dbf57877b7b17385c85d0b54851e371":0
 
 AES-128-ECB Encrypt NIST KAT #13
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"ffffffffffffffc00000000000000000":"3a4d354f02bb5a5e47d39666867f246a":0
 
 AES-128-ECB Encrypt NIST KAT #14
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"ffffffffffffffe00000000000000000":"d451b8d6e1e1a0ebb155fbbf6e7b7dc3":0
 
 AES-128-ECB Encrypt NIST KAT #15
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"fffffffffffffff00000000000000000":"6898d4f42fa7ba6a10ac05e87b9f2080":0
 
 AES-128-ECB Encrypt NIST KAT #16
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"ffffffffffffffffffffffffe0000000":"082eb8be35f442fb52668e16a591d1d6":0
 
 AES-128-ECB Encrypt NIST KAT #17
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"fffffffffffffffffffffffff0000000":"e656f9ecf5fe27ec3e4a73d00c282fb3":0
 
 AES-128-ECB Encrypt NIST KAT #18
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_ENCRYPT:"00000000000000000000000000000000":"fffffffffffffffffffffffff8000000":"2ca8209d63274cd9a29bb74bcd77683a":0
 
 AES-128-ECB Decrypt NIST KAT #1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"00000000000000000000000000000000":"db4f1aa530967d6732ce4715eb0ee24b":"ff000000000000000000000000000000":0
 
 AES-128-ECB Decrypt NIST KAT #2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"00000000000000000000000000000000":"a81738252621dd180a34f3455b4baa2f":"ff800000000000000000000000000000":0
 
 AES-128-ECB Decrypt NIST KAT #3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"00000000000000000000000000000000":"77e2b508db7fd89234caf7939ee5621a":"ffc00000000000000000000000000000":0
 
 AES-128-ECB Decrypt NIST KAT #4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"00000000000000000000000000000000":"dc43be40be0e53712f7e2bf5ca707209":"6a118a874519e64e9963798a503f1d35":0
 
 AES-128-ECB Decrypt NIST KAT #5
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"00000000000000000000000000000000":"92beedab1895a94faa69b632e5cc47ce":"cb9fceec81286ca3e989bd979b0cb284":0
 
 AES-128-ECB Decrypt NIST KAT #6
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"00000000000000000000000000000000":"459264f4798f6a78bacb89c15ed3d601":"b26aeb1874e47ca8358ff22378f09144":0
 
 AES-128-ECB Decrypt NIST KAT #7
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"b69418a85332240dc82492353956ae0c":"a303d940ded8f0baff6f75414cac5243":"00000000000000000000000000000000":0
 
 AES-128-ECB Decrypt NIST KAT #8
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"71b5c08a1993e1362e4d0ce9b22b78d5":"c2dabd117f8a3ecabfbb11d12194d9d0":"00000000000000000000000000000000":0
 
 AES-128-ECB Decrypt NIST KAT #9
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"e234cdca2606b81f29408d5f6da21206":"fff60a4740086b3b9c56195b98d91a7b":"00000000000000000000000000000000":0
 
 AES-128-ECB Decrypt NIST KAT #10
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"ffffffffffffffff0000000000000000":"84be19e053635f09f2665e7bae85b42d":"00000000000000000000000000000000":0
 
 AES-128-ECB Decrypt NIST KAT #11
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_128_ECB:POLARSSL_DECRYPT:"ffffffffffffffff8000000000000000":"32cd652842926aea4aa6137bb2be2b5e":"00000000000000000000000000000000":0
 
 AES-192-ECB Encrypt NIST KAT #1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"000000000000000000000000000000000000000000000000":"fffffffffffffffffffff80000000000":"156f07767a85a4312321f63968338a01":0
 
 AES-192-ECB Encrypt NIST KAT #2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"000000000000000000000000000000000000000000000000":"fffffffffffffffffffffc0000000000":"15eec9ebf42b9ca76897d2cd6c5a12e2":0
 
 AES-192-ECB Encrypt NIST KAT #3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"000000000000000000000000000000000000000000000000":"fffffffffffffffffffffe0000000000":"db0d3a6fdcc13f915e2b302ceeb70fd8":0
 
 AES-192-ECB Encrypt NIST KAT #4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"000000000000000000000000000000000000000000000000":"51719783d3185a535bd75adc65071ce1":"4f354592ff7c8847d2d0870ca9481b7c":0
 
 AES-192-ECB Encrypt NIST KAT #5
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"000000000000000000000000000000000000000000000000":"26aa49dcfe7629a8901a69a9914e6dfd":"d5e08bf9a182e857cf40b3a36ee248cc":0
 
 AES-192-ECB Encrypt NIST KAT #6
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"000000000000000000000000000000000000000000000000":"941a4773058224e1ef66d10e0a6ee782":"067cd9d3749207791841562507fa9626":0
 
 AES-192-ECB Encrypt NIST KAT #7
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3":"00000000000000000000000000000000":"dd619e1cf204446112e0af2b9afa8f8c":0
 
 AES-192-ECB Encrypt NIST KAT #8
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"982215f4e173dfa0fcffe5d3da41c4812c7bcc8ed3540f93":"00000000000000000000000000000000":"d4f0aae13c8fe9339fbf9e69ed0ad74d":0
 
 AES-192-ECB Encrypt NIST KAT #9
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"98c6b8e01e379fbd14e61af6af891596583565f2a27d59e9":"00000000000000000000000000000000":"19c80ec4a6deb7e5ed1033dda933498f":0
 
 AES-192-ECB Encrypt NIST KAT #10
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"fffffffffffffffffffffffffff800000000000000000000":"00000000000000000000000000000000":"8dd274bd0f1b58ae345d9e7233f9b8f3":0
 
 AES-192-ECB Encrypt NIST KAT #11
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"fffffffffffffffffffffffffffc00000000000000000000":"00000000000000000000000000000000":"9d6bdc8f4ce5feb0f3bed2e4b9a9bb0b":0
 
 AES-192-ECB Encrypt NIST KAT #12
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_ENCRYPT:"fffffffffffffffffffffffffffe00000000000000000000":"00000000000000000000000000000000":"fd5548bcf3f42565f7efa94562528d46":0
 
 AES-192-ECB Decrypt NIST KAT #1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"fffffffffffffffffffffffffffffffff000000000000000":"bb2852c891c5947d2ed44032c421b85f":"00000000000000000000000000000000":0
 
 AES-192-ECB Decrypt NIST KAT #2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"fffffffffffffffffffffffffffffffff800000000000000":"1b9f5fbd5e8a4264c0a85b80409afa5e":"00000000000000000000000000000000":0
 
 AES-192-ECB Decrypt NIST KAT #3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"fffffffffffffffffffffffffffffffffc00000000000000":"30dab809f85a917fe924733f424ac589":"00000000000000000000000000000000":0
 
 AES-192-ECB Decrypt NIST KAT #4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79":"cfe4d74002696ccf7d87b14a2f9cafc9":"00000000000000000000000000000000":0
 
 AES-192-ECB Decrypt NIST KAT #5
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"b0ab0a6a818baef2d11fa33eac947284fb7d748cfb75e570":"d2eafd86f63b109b91f5dbb3a3fb7e13":"00000000000000000000000000000000":0
 
 AES-192-ECB Decrypt NIST KAT #6
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"ee053aa011c8b428cdcc3636313c54d6a03cac01c71579d6":"9b9fdd1c5975655f539998b306a324af":"00000000000000000000000000000000":0
 
 AES-192-ECB Decrypt NIST KAT #7
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"000000000000000000000000000000000000000000000000":"275cfc0413d8ccb70513c3859b1d0f72":"1b077a6af4b7f98229de786d7516b639":0
 
 AES-192-ECB Decrypt NIST KAT #8
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"000000000000000000000000000000000000000000000000":"c9b8135ff1b5adc413dfd053b21bd96d":"9c2d8842e5f48f57648205d39a239af1":0
 
 AES-192-ECB Decrypt NIST KAT #9
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"000000000000000000000000000000000000000000000000":"4a3650c3371ce2eb35e389a171427440":"bff52510095f518ecca60af4205444bb":0
 
 AES-192-ECB Decrypt NIST KAT #10
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"000000000000000000000000000000000000000000000000":"b2099795e88cc158fd75ea133d7e7fbe":"ffffffffffffffffffffc00000000000":0
 
 AES-192-ECB Decrypt NIST KAT #11
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"000000000000000000000000000000000000000000000000":"a6cae46fb6fadfe7a2c302a34242817b":"ffffffffffffffffffffe00000000000":0
 
 AES-192-ECB Decrypt NIST KAT #12
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_192_ECB:POLARSSL_DECRYPT:"000000000000000000000000000000000000000000000000":"026a7024d6a902e0b3ffccbaa910cc3f":"fffffffffffffffffffff00000000000":0
 
 AES-256-ECB Encrypt NIST KAT #1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c":"00000000000000000000000000000000":"352065272169abf9856843927d0674fd":0
 
 AES-256-ECB Encrypt NIST KAT #2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627":"00000000000000000000000000000000":"4307456a9e67813b452e15fa8fffe398":0
 
 AES-256-ECB Encrypt NIST KAT #3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f":"00000000000000000000000000000000":"4663446607354989477a5c6f0f007ef4":0
 
 AES-256-ECB Encrypt NIST KAT #4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"0b24af36193ce4665f2825d7b4749c98":"a9ff75bd7cf6613d3731c77c3b6d0c04":0
 
 AES-256-ECB Encrypt NIST KAT #5
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"761c1fe41a18acf20d241650611d90f1":"623a52fcea5d443e48d9181ab32c7421":0
 
 AES-256-ECB Encrypt NIST KAT #6
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"8a560769d605868ad80d819bdba03771":"38f2c7ae10612415d27ca190d27da8b4":0
 
 AES-256-ECB Encrypt NIST KAT #7
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"ffffff80000000000000000000000000":"36aff0ef7bf3280772cf4cac80a0d2b2":0
 
 AES-256-ECB Encrypt NIST KAT #8
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"ffffffc0000000000000000000000000":"1f8eedea0f62a1406d58cfc3ecea72cf":0
 
 AES-256-ECB Encrypt NIST KAT #9
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"ffffffe0000000000000000000000000":"abf4154a3375a1d3e6b1d454438f95a6":0
 
 AES-256-ECB Encrypt NIST KAT #10
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"ffffffffffffffffffffffffffffffffffff8000000000000000000000000000":"00000000000000000000000000000000":"45d089c36d5c5a4efc689e3b0de10dd5":0
 
 AES-256-ECB Encrypt NIST KAT #11
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"ffffffffffffffffffffffffffffffffffffc000000000000000000000000000":"00000000000000000000000000000000":"b4da5df4becb5462e03a0ed00d295629":0
 
 AES-256-ECB Encrypt NIST KAT #12
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_ENCRYPT:"ffffffffffffffffffffffffffffffffffffe000000000000000000000000000":"00000000000000000000000000000000":"dcf4e129136c1a4b7a0f38935cc34b2b":0
 
 AES-256-ECB Decrypt NIST KAT #1
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000":"edf61ae362e882ddc0167474a7a77f3a":"00000000000000000000000000000000":0
 
 AES-256-ECB Decrypt NIST KAT #2
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000":"6168b00ba7859e0970ecfd757efecf7c":"00000000000000000000000000000000":0
 
 AES-256-ECB Decrypt NIST KAT #3
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000":"d1415447866230d28bb1ea18a4cdfd02":"00000000000000000000000000000000":0
 
 AES-256-ECB Decrypt NIST KAT #4
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9":"a3944b95ca0b52043584ef02151926a8":"00000000000000000000000000000000":0
 
 AES-256-ECB Decrypt NIST KAT #5
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e":"a74289fe73a4c123ca189ea1e1b49ad5":"00000000000000000000000000000000":0
 
 AES-256-ECB Decrypt NIST KAT #6
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707":"b91d4ea4488644b56cf0812fa7fcf5fc":"00000000000000000000000000000000":0
 
 AES-256-ECB Decrypt NIST KAT #7
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"623a52fcea5d443e48d9181ab32c7421":"761c1fe41a18acf20d241650611d90f1":0
 
 AES-256-ECB Decrypt NIST KAT #8
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"38f2c7ae10612415d27ca190d27da8b4":"8a560769d605868ad80d819bdba03771":0
 
 AES-256-ECB Decrypt NIST KAT #9
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"1bc704f1bce135ceb810341b216d7abe":"91fbef2d15a97816060bee1feaa49afe":0
 
 AES-256-ECB Decrypt NIST KAT #10
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"ddc6bf790c15760d8d9aeb6f9a75fd4e":"80000000000000000000000000000000":0
 
 AES-256-ECB Decrypt NIST KAT #11
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"0a6bdc6d4c1e6280301fd8e97ddbe601":"c0000000000000000000000000000000":0
 
 AES-256-ECB Decrypt NIST KAT #12
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 test_vec_ecb:POLARSSL_CIPHER_AES_256_ECB:POLARSSL_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"9b80eefb7ebe2d2b16247aa0efc72f5d":"e0000000000000000000000000000000":0
diff --git a/tests/suites/test_suite_cipher.arc4.data b/tests/suites/test_suite_cipher.arc4.data
index 93d35b3..46ad0bb 100644
--- a/tests/suites/test_suite_cipher.arc4.data
+++ b/tests/suites/test_suite_cipher.arc4.data
@@ -1,10 +1,3 @@
-Cipher Selftest
-depends_on:POLARSSL_SELF_TEST
-cipher_selftest:
-
-Decrypt empty buffer
-dec_empty_buf:
-
 ARC4 Encrypt and decrypt 0 bytes
 depends_on:POLARSSL_ARC4_C
 enc_dec_buf:POLARSSL_CIPHER_ARC4_128:"ARC4-128":128:0:-1
diff --git a/tests/suites/test_suite_cipher.blowfish.data b/tests/suites/test_suite_cipher.blowfish.data
index ac1ab10..2921c61 100644
--- a/tests/suites/test_suite_cipher.blowfish.data
+++ b/tests/suites/test_suite_cipher.blowfish.data
@@ -1,352 +1,345 @@
-Cipher Selftest
-depends_on:POLARSSL_SELF_TEST
-cipher_selftest:
-
-Decrypt empty buffer
-dec_empty_buf:
-
 BLOWFISH Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:0:-1
 
 BLOWFISH Encrypt and decrypt 1 byte
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:1:-1
 
 BLOWFISH Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:2:-1
 
 BLOWFISH Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:7:-1
 
 BLOWFISH Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:8:-1
 
 BLOWFISH Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:9:-1
 
 BLOWFISH Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:15:-1
 
 BLOWFISH Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:16:-1
 
 BLOWFISH Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:17:-1
 
 BLOWFISH Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:31:-1
 
 BLOWFISH Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:32:-1
 
 BLOWFISH Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:33:-1
 
 BLOWFISH Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:47:-1
 
 BLOWFISH Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:48:-1
 
 BLOWFISH Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:49:-1
 
 BLOWFISH Encrypt and decrypt 0 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:0:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 1 byte with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:1:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 2 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:2:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 7 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:7:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 8 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:8:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 9 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:9:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 15 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:15:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 16 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:16:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 17 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:17:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 31 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:31:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 32 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:32:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 32 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:33:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 47 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:47:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 48 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:48:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 49 bytes with one and zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:49:POLARSSL_PADDING_ONE_AND_ZEROS
 
 BLOWFISH Encrypt and decrypt 0 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:0:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 1 byte with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:1:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 2 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:2:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 7 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:7:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 8 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:8:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 9 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:9:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 15 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:15:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 16 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:16:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 17 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:17:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 31 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:31:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 32 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:32:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 32 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:33:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 47 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:47:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 48 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:48:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 49 bytes with zeros and len padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:49:POLARSSL_PADDING_ZEROS_AND_LEN
 
 BLOWFISH Encrypt and decrypt 0 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:0:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 1 byte with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:1:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 2 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:2:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 7 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:7:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 8 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:8:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 9 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:9:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 15 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:15:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 16 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:16:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 17 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:17:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 31 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:31:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 32 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:32:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 32 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:33:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 47 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:47:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 48 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:48:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 49 bytes with zeros padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:49:POLARSSL_PADDING_ZEROS
 
 BLOWFISH Encrypt and decrypt 0 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:0:POLARSSL_PADDING_NONE
 
 BLOWFISH Encrypt and decrypt 8 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:8:POLARSSL_PADDING_NONE
 
 BLOWFISH Encrypt and decrypt 16 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:16:POLARSSL_PADDING_NONE
 
 BLOWFISH Encrypt and decrypt 32 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:32:POLARSSL_PADDING_NONE
 
 BLOWFISH Encrypt and decrypt 48 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_BLOWFISH_CBC:"BLOWFISH-CBC":128:48:POLARSSL_PADDING_NONE
 
 BLOWFISH Try encrypting 1 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:1:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 2 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:2:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 7 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:7:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 9 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:9:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 15 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:15:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 17 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:17:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 31 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:31:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 33 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:33:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 47 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:47:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Try encrypting 49 bytes with no padding
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_NONE:128:49:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 BLOWFISH Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:0:0:
 
 BLOWFISH Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:1:0:
 
 BLOWFISH Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:0:1:
 
 BLOWFISH Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:16:0:
 
 BLOWFISH Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:0:16:
 
 BLOWFISH Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:1:15:
 
 BLOWFISH Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:15:1:
 
 BLOWFISH Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:15:7:
 
 BLOWFISH Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:16:6:
 
 BLOWFISH Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:17:6:
 
 BLOWFISH Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_BLOWFISH_CBC:128:16:16:
 
 BLOWFISH Encrypt and decrypt 0 bytes
diff --git a/tests/suites/test_suite_cipher.camellia.data b/tests/suites/test_suite_cipher.camellia.data
index 84fe20e..00cd545 100644
--- a/tests/suites/test_suite_cipher.camellia.data
+++ b/tests/suites/test_suite_cipher.camellia.data
@@ -1,352 +1,345 @@
-Cipher Selftest
-depends_on:POLARSSL_SELF_TEST
-cipher_selftest:
-
-Decrypt empty buffer
-dec_empty_buf:
-
 CAMELLIA Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:0:-1
 
 CAMELLIA Encrypt and decrypt 1 byte
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:1:-1
 
 CAMELLIA Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:2:-1
 
 CAMELLIA Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:7:-1
 
 CAMELLIA Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:8:-1
 
 CAMELLIA Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:9:-1
 
 CAMELLIA Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:15:-1
 
 CAMELLIA Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:16:-1
 
 CAMELLIA Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:17:-1
 
 CAMELLIA Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:31:-1
 
 CAMELLIA Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:32:-1
 
 CAMELLIA Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:33:-1
 
 CAMELLIA Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:47:-1
 
 CAMELLIA Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:48:-1
 
 CAMELLIA Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:49:-1
 
 CAMELLIA Encrypt and decrypt 0 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:0:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 1 byte with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:1:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 2 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:2:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 7 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:7:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 8 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:8:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 9 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:9:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 15 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:15:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 16 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:16:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 17 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:17:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 31 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:31:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 32 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:32:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 32 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:33:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 47 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:47:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 48 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:48:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 49 bytes with one and zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:49:POLARSSL_PADDING_ONE_AND_ZEROS
 
 CAMELLIA Encrypt and decrypt 0 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:0:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 1 byte with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:1:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 2 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:2:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 7 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:7:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 8 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:8:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 9 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:9:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 15 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:15:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 16 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:16:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 17 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:17:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 31 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:31:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 32 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:32:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 32 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:33:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 47 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:47:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 48 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:48:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 49 bytes with zeros and len padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:49:POLARSSL_PADDING_ZEROS_AND_LEN
 
 CAMELLIA Encrypt and decrypt 0 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:0:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 1 byte with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:1:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 2 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:2:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 7 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:7:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 8 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:8:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 9 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:9:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 15 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:15:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 16 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:16:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 17 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:17:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 31 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:31:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 32 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:32:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 32 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:33:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 47 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:47:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 48 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:48:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 49 bytes with zeros padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:49:POLARSSL_PADDING_ZEROS
 
 CAMELLIA Encrypt and decrypt 0 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:0:POLARSSL_PADDING_NONE
 
 CAMELLIA Encrypt and decrypt 16 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:16:POLARSSL_PADDING_NONE
 
 CAMELLIA Encrypt and decrypt 32 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:32:POLARSSL_PADDING_NONE
 
 CAMELLIA Encrypt and decrypt 48 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_128_CBC:"CAMELLIA-128-CBC":128:48:POLARSSL_PADDING_NONE
 
 CAMELLIA Try encrypting 1 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:1:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 2 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:2:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 7 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:7:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 8 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:8:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 9 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:9:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 15 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:15:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 17 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:17:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 31 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:31:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 33 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:33:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 47 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:47:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Try encrypting 49 bytes with no padding
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_NONE:128:49:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 CAMELLIA Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:0:0:
 
 CAMELLIA Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:1:0:
 
 CAMELLIA Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:0:1:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:16:0:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:0:16:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:1:15:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:15:1:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:15:7:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:16:6:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:17:6:
 
 CAMELLIA Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CBC:128:16:16:
 
 CAMELLIA Encrypt and decrypt 0 bytes
@@ -558,209 +551,209 @@
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_128_CTR:128:16:16:
 
 CAMELLIA Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:0:-1
 
 CAMELLIA Encrypt and decrypt 1 byte
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:1:-1
 
 CAMELLIA Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:2:-1
 
 CAMELLIA Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:7:-1
 
 CAMELLIA Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:8:-1
 
 CAMELLIA Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:9:-1
 
 CAMELLIA Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:15:-1
 
 CAMELLIA Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:16:-1
 
 CAMELLIA Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:17:-1
 
 CAMELLIA Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:31:-1
 
 CAMELLIA Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:32:-1
 
 CAMELLIA Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:33:-1
 
 CAMELLIA Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:47:-1
 
 CAMELLIA Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:48:-1
 
 CAMELLIA Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_192_CBC:"CAMELLIA-192-CBC":192:49:-1
 
 CAMELLIA Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:0:0:
 
 CAMELLIA Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:1:0:
 
 CAMELLIA Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:0:1:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:16:0:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:0:16:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:1:15:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:15:1:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:15:7:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:16:6:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:17:6:
 
 CAMELLIA Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_192_CBC:192:16:16:
 
 CAMELLIA Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:0:-1
 
 CAMELLIA Encrypt and decrypt 1 byte
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:1:-1
 
 CAMELLIA Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:2:-1
 
 CAMELLIA Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:7:-1
 
 CAMELLIA Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:8:-1
 
 CAMELLIA Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:9:-1
 
 CAMELLIA Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:15:-1
 
 CAMELLIA Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:16:-1
 
 CAMELLIA Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:17:-1
 
 CAMELLIA Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:31:-1
 
 CAMELLIA Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:32:-1
 
 CAMELLIA Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:33:-1
 
 CAMELLIA Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:47:-1
 
 CAMELLIA Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:48:-1
 
 CAMELLIA Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_CAMELLIA_256_CBC:"CAMELLIA-256-CBC":256:49:-1
 
 CAMELLIA Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:0:0:
 
 CAMELLIA Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:1:0:
 
 CAMELLIA Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:0:1:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:16:0:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:0:16:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:1:15:
 
 CAMELLIA Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:15:1:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:15:7:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:16:6:
 
 CAMELLIA Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:17:6:
 
 CAMELLIA Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_CAMELLIA_256_CBC:256:16:16:
diff --git a/tests/suites/test_suite_cipher.des.data b/tests/suites/test_suite_cipher.des.data
index 01da02c..ce68a5c 100644
--- a/tests/suites/test_suite_cipher.des.data
+++ b/tests/suites/test_suite_cipher.des.data
@@ -1,558 +1,551 @@
-Cipher Selftest
-depends_on:POLARSSL_SELF_TEST
-cipher_selftest:
-
-Decrypt empty buffer
-dec_empty_buf:
-
 DES Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:0:-1
 
 DES Encrypt and decrypt 1 byte
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:1:-1
 
 DES Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:2:-1
 
 DES Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:7:-1
 
 DES Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:8:-1
 
 DES Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:9:-1
 
 DES Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:15:-1
 
 DES Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:16:-1
 
 DES Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:17:-1
 
 DES Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:31:-1
 
 DES Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:32:-1
 
 DES Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:33:-1
 
 DES Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:47:-1
 
 DES Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:48:-1
 
 DES Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:49:-1
 
 DES Encrypt and decrypt 0 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:0:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 1 byte with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:1:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 2 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:2:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 7 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:7:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 8 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:8:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 9 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:9:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 15 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:15:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 16 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:16:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 17 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:17:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 31 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:31:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 32 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:32:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 32 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:33:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 47 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:47:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 48 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:48:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 49 bytes with one and zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:49:POLARSSL_PADDING_ONE_AND_ZEROS
 
 DES Encrypt and decrypt 0 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:0:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 1 byte with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:1:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 2 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:2:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 7 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:7:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 8 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:8:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 9 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:9:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 15 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:15:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 16 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:16:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 17 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:17:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 31 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:31:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 32 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:32:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 32 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:33:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 47 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:47:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 48 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:48:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 49 bytes with zeros and len padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:49:POLARSSL_PADDING_ZEROS_AND_LEN
 
 DES Encrypt and decrypt 0 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:0:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 1 byte with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:1:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 2 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:2:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 7 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:7:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 8 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:8:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 9 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:9:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 15 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:15:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 16 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:16:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 17 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:17:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 31 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:31:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 32 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:32:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 32 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:33:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 47 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:47:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 48 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:48:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 49 bytes with zeros padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:49:POLARSSL_PADDING_ZEROS
 
 DES Encrypt and decrypt 0 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:0:POLARSSL_PADDING_NONE
 
 DES Encrypt and decrypt 8 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:8:POLARSSL_PADDING_NONE
 
 DES Encrypt and decrypt 16 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:16:POLARSSL_PADDING_NONE
 
 DES Encrypt and decrypt 32 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:32:POLARSSL_PADDING_NONE
 
 DES Encrypt and decrypt 48 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_CBC:"DES-CBC":56:48:POLARSSL_PADDING_NONE
 
 DES Try encrypting 1 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:1:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 2 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:2:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 7 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:7:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 9 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:9:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 15 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:15:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 17 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:17:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 31 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:31:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 33 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:33:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 47 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:47:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Try encrypting 49 bytes with no padding
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_fail:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_NONE:56:49:POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED
 
 DES Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:0:0:
 
 DES Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:1:0:
 
 DES Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:0:1:
 
 DES Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:16:0:
 
 DES Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:0:16:
 
 DES Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:1:15:
 
 DES Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:15:1:
 
 DES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:15:7:
 
 DES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:16:6:
 
 DES Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:17:6:
 
 DES Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_CBC:56:16:16:
 
 DES Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:0:-1
 
 DES3 Encrypt and decrypt 1 byte
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:1:-1
 
 DES3 Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:2:-1
 
 DES3 Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:7:-1
 
 DES3 Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:8:-1
 
 DES3 Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:9:-1
 
 DES3 Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:15:-1
 
 DES3 Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:16:-1
 
 DES3 Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:17:-1
 
 DES3 Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:31:-1
 
 DES3 Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:32:-1
 
 DES3 Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:33:-1
 
 DES3 Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:47:-1
 
 DES3 Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:48:-1
 
 DES3 Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE_CBC:"DES-EDE-CBC":112:49:-1
 
 DES3 Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:0:0:
 
 DES3 Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:1:0:
 
 DES3 Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:0:1:
 
 DES3 Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:16:0:
 
 DES3 Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:0:16:
 
 DES3 Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:1:15:
 
 DES3 Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:15:1:
 
 DES3 Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:15:7:
 
 DES3 Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:16:6:
 
 DES3 Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:17:6:
 
 DES3 Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE_CBC:112:16:16:
 
 DES3 Encrypt and decrypt 0 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:0:-1
 
 DES3 Encrypt and decrypt 1 byte
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:1:-1
 
 DES3 Encrypt and decrypt 2 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:2:-1
 
 DES3 Encrypt and decrypt 7 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:7:-1
 
 DES3 Encrypt and decrypt 8 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:8:-1
 
 DES3 Encrypt and decrypt 9 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:9:-1
 
 DES3 Encrypt and decrypt 15 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:15:-1
 
 DES3 Encrypt and decrypt 16 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:16:-1
 
 DES3 Encrypt and decrypt 17 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:17:-1
 
 DES3 Encrypt and decrypt 31 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:31:-1
 
 DES3 Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:32:-1
 
 DES3 Encrypt and decrypt 32 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:33:-1
 
 DES3 Encrypt and decrypt 47 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:47:-1
 
 DES3 Encrypt and decrypt 48 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:48:-1
 
 DES3 Encrypt and decrypt 49 bytes
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf:POLARSSL_CIPHER_DES_EDE3_CBC:"DES-EDE3-CBC":168:49:-1
 
 DES3 Encrypt and decrypt 0 bytes in multiple parts
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:0:0:
 
 DES3 Encrypt and decrypt 1 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:1:0:
 
 DES3 Encrypt and decrypt 1 bytes in multiple parts 2
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:0:1:
 
 DES3 Encrypt and decrypt 16 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:16:0:
 
 DES3 Encrypt and decrypt 16 bytes in multiple parts 2
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:0:16:
 
 DES3 Encrypt and decrypt 16 bytes in multiple parts 3
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:1:15:
 
 DES3 Encrypt and decrypt 16 bytes in multiple parts 4
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:15:1:
 
 DES3 Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:15:7:
 
 DES3 Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:16:6:
 
 DES3 Encrypt and decrypt 22 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:17:6:
 
 DES3 Encrypt and decrypt 32 bytes in multiple parts 1
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 enc_dec_buf_multipart:POLARSSL_CIPHER_DES_EDE3_CBC:168:16:16:
diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function
index 898d98d..892036b 100644
--- a/tests/suites/test_suite_cipher.function
+++ b/tests/suites/test_suite_cipher.function
@@ -48,11 +48,15 @@
     TEST_ASSERT( 0 == cipher_setkey( &ctx_dec, key, key_len, POLARSSL_DECRYPT ) );
     TEST_ASSERT( 0 == cipher_setkey( &ctx_enc, key, key_len, POLARSSL_ENCRYPT ) );
 
+#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
     if( -1 != pad_mode )
     {
         TEST_ASSERT( 0 == cipher_set_padding_mode( &ctx_dec, pad_mode ) );
         TEST_ASSERT( 0 == cipher_set_padding_mode( &ctx_enc, pad_mode ) );
     }
+#else
+    (void) pad_mode;
+#endif /* POLARSSL_CIPHER_MODE_WITH_PADDING */
 
     /*
      * Do a few encode/decode cycles
@@ -159,7 +163,11 @@
     /* Initialise context */
     TEST_ASSERT( 0 == cipher_init_ctx( &ctx, cipher_info ) );
     TEST_ASSERT( 0 == cipher_setkey( &ctx, key, key_len, POLARSSL_ENCRYPT ) );
+#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
     TEST_ASSERT( 0 == cipher_set_padding_mode( &ctx, pad_mode ) );
+#else
+    (void) pad_mode;
+#endif /* POLARSSL_CIPHER_MODE_WITH_PADDING */
     TEST_ASSERT( 0 == cipher_set_iv( &ctx, iv, 16 ) );
     TEST_ASSERT( 0 == cipher_reset( &ctx ) );
 #if defined(POLARSSL_CIPHER_MODE_AEAD)
@@ -351,8 +359,12 @@
     TEST_ASSERT( 0 == cipher_init_ctx( &ctx,
                                        cipher_info_from_type( cipher_id ) ) );
     TEST_ASSERT( 0 == cipher_setkey( &ctx, key, 8 * key_len, POLARSSL_DECRYPT ) );
+#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING)
     if( pad_mode != -1 )
         TEST_ASSERT( 0 == cipher_set_padding_mode( &ctx, pad_mode ) );
+#else
+    (void) pad_mode;
+#endif /* POLARSSL_CIPHER_MODE_WITH_PADDING */
     TEST_ASSERT( 0 == cipher_set_iv( &ctx, iv, iv_len ) );
     TEST_ASSERT( 0 == cipher_reset( &ctx ) );
 #if defined(POLARSSL_CIPHER_MODE_AEAD)
@@ -428,7 +440,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_WITH_PADDING */
 void set_padding( int cipher_id, int pad_mode, int ret )
 {
     const cipher_info_t *cipher_info;
@@ -444,7 +456,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void check_padding( int pad_mode, char *input_str, int ret, int dlen_check )
 {
     cipher_info_t cipher_info;
diff --git a/tests/suites/test_suite_cipher.gcm.data b/tests/suites/test_suite_cipher.gcm.data
index 7681d18..048251f 100644
--- a/tests/suites/test_suite_cipher.gcm.data
+++ b/tests/suites/test_suite_cipher.gcm.data
@@ -1,10 +1,3 @@
-Cipher Selftest
-depends_on:POLARSSL_SELF_TEST
-cipher_selftest:
-
-Decrypt empty buffer
-dec_empty_buf:
-
 AES-GCM Encrypt and decrypt 0 bytes
 depends_on:POLARSSL_AES_C:POLARSSL_GCM_C
 enc_dec_buf:POLARSSL_CIPHER_AES_128_GCM:"AES-128-GCM":128:0:-1
diff --git a/tests/suites/test_suite_cipher.null.data b/tests/suites/test_suite_cipher.null.data
index dd68277..f728917 100644
--- a/tests/suites/test_suite_cipher.null.data
+++ b/tests/suites/test_suite_cipher.null.data
@@ -1,10 +1,3 @@
-Cipher Selftest
-depends_on:POLARSSL_SELF_TEST
-cipher_selftest:
-
-Decrypt empty buffer
-dec_empty_buf:
-
 NULL Encrypt and decrypt 0 bytes
 depends_on:POLARSSL_CIPHER_NULL_CIPHER
 enc_dec_buf:POLARSSL_CIPHER_NULL:"NULL":0:0:-1
diff --git a/tests/suites/test_suite_cipher.padding.data b/tests/suites/test_suite_cipher.padding.data
index c17ab2e..96ae120 100644
--- a/tests/suites/test_suite_cipher.padding.data
+++ b/tests/suites/test_suite_cipher.padding.data
@@ -1,5 +1,5 @@
 Set padding with AES-CBC
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 set_padding:POLARSSL_CIPHER_AES_128_CBC:POLARSSL_PADDING_PKCS7:0
 
 Set padding with AES-CFB
@@ -11,7 +11,7 @@
 set_padding:POLARSSL_CIPHER_AES_128_CTR:POLARSSL_PADDING_PKCS7:POLARSSL_ERR_CIPHER_BAD_INPUT_DATA
 
 Set padding with CAMELLIA-CBC
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 set_padding:POLARSSL_CIPHER_CAMELLIA_128_CBC:POLARSSL_PADDING_PKCS7:0
 
 Set padding with CAMELLIA-CFB
@@ -23,11 +23,11 @@
 set_padding:POLARSSL_CIPHER_CAMELLIA_128_CTR:POLARSSL_PADDING_PKCS7:POLARSSL_ERR_CIPHER_BAD_INPUT_DATA
 
 Set padding with DES-CBC
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 set_padding:POLARSSL_CIPHER_DES_CBC:POLARSSL_PADDING_PKCS7:0
 
 Set padding with BLOWFISH-CBC
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 set_padding:POLARSSL_CIPHER_BLOWFISH_CBC:POLARSSL_PADDING_PKCS7:0
 
 Set padding with BLOWFISH-CFB
@@ -43,19 +43,19 @@
 set_padding:POLARSSL_CIPHER_NULL:POLARSSL_PADDING_PKCS7:POLARSSL_ERR_CIPHER_BAD_INPUT_DATA
 
 Set non-existent padding with AES-CBC
-depends_on:POLARSSL_AES_C
+depends_on:POLARSSL_AES_C:POLARSSL_CIPHER_MODE_CBC
 set_padding:POLARSSL_CIPHER_AES_128_CBC:-1:POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE
 
 Set non-existent padding with CAMELLIA-CBC
-depends_on:POLARSSL_CAMELLIA_C
+depends_on:POLARSSL_CAMELLIA_C:POLARSSL_CIPHER_MODE_CBC
 set_padding:POLARSSL_CIPHER_CAMELLIA_128_CBC:-1:POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE
 
 Set non-existent padding with DES-CBC
-depends_on:POLARSSL_DES_C
+depends_on:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC
 set_padding:POLARSSL_CIPHER_DES_CBC:-1:POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE
 
 Set non-existent padding with BLOWFISH-CBC
-depends_on:POLARSSL_BLOWFISH_C
+depends_on:POLARSSL_BLOWFISH_C:POLARSSL_CIPHER_MODE_CBC
 set_padding:POLARSSL_CIPHER_BLOWFISH_CBC:-1:POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE
 
 Check PKCS padding #1 (correct)
diff --git a/tests/suites/test_suite_des.function b/tests/suites/test_suite_des.function
index 865a467..8eb0c00 100644
--- a/tests/suites/test_suite_des.function
+++ b/tests/suites/test_suite_des.function
@@ -59,7 +59,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void des_encrypt_cbc( char *hex_key_string, char *hex_iv_string,
                       char *hex_src_string, char *hex_dst_string, int cbc_result )
 {
@@ -92,7 +92,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void des_decrypt_cbc( char *hex_key_string, char *hex_iv_string,
                       char *hex_src_string, char *hex_dst_string, int cbc_result )
 {
@@ -189,7 +189,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void des3_encrypt_cbc( int key_count, char *hex_key_string,
                        char *hex_iv_string, char *hex_src_string,
                        char *hex_dst_string, int cbc_result )
@@ -230,7 +230,7 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_CIPHER_MODE_CBC */
 void des3_decrypt_cbc( int key_count, char *hex_key_string,
                        char *hex_iv_string, char *hex_src_string,
                        char *hex_dst_string, int cbc_result )
diff --git a/tests/suites/test_suite_x509parse.data b/tests/suites/test_suite_x509parse.data
index ef7bbd4..0ac7e09 100644
--- a/tests/suites/test_suite_x509parse.data
+++ b/tests/suites/test_suite_x509parse.data
@@ -127,35 +127,35 @@
 x509_crl_info:"data_files/crl-ec-sha512.pem":"CRL version   \: 2\nissuer name   \: C=NL, O=PolarSSL, CN=Polarssl Test EC CA\nthis update   \: 2013-08-09 08\:07\:01\nnext update   \: 2023-08-07 08\:07\:01\nRevoked certificates\:\nserial number\: 02 revocation date\: 2013-08-09 08\:04\:03\nsigned using  \: ECDSA with SHA512\n"
 
 X509 Parse RSA Key #1 (No password when required)
-depends_on:POLARSSL_MD5_C:POLARSSL_PEM_C:POLARSSL_FS_IO
+depends_on:POLARSSL_MD5_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/test-ca.key":"NULL":POLARSSL_ERR_X509_PASSWORD_REQUIRED
 
 X509 Parse RSA Key #2 (Correct password)
-depends_on:POLARSSL_MD5_C:POLARSSL_PEM_C:POLARSSL_FS_IO
+depends_on:POLARSSL_MD5_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/test-ca.key":"PolarSSLTest":0
 
 X509 Parse RSA Key #3 (Wrong password)
-depends_on:POLARSSL_MD5_C:POLARSSL_PEM_C:POLARSSL_FS_IO
+depends_on:POLARSSL_MD5_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/test-ca.key":"PolarSSLWRONG":POLARSSL_ERR_X509_PASSWORD_MISMATCH
 
 X509 Parse RSA Key #4 (DES Encrypted)
-depends_on:POLARSSL_MD5_C:POLARSSL_DES_C:POLARSSL_PEM_C:POLARSSL_FS_IO
+depends_on:POLARSSL_MD5_C:POLARSSL_DES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/keyfile.des":"testkey":0
 
 X509 Parse RSA Key #5 (3DES Encrypted)
-depends_on:POLARSSL_MD5_C:POLARSSL_DES_C:POLARSSL_PEM_C:POLARSSL_FS_IO
+depends_on:POLARSSL_MD5_C:POLARSSL_DES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/keyfile.3des":"testkey":0
 
 X509 Parse RSA Key #6 (AES-128 Encrypted)
-depends_on:POLARSSL_MD5_C:POLARSSL_AES_C:POLARSSL_PEM_C:POLARSSL_FS_IO
+depends_on:POLARSSL_MD5_C:POLARSSL_AES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/keyfile.aes128":"testkey":0
 
 X509 Parse RSA Key #7 (AES-192 Encrypted)
-depends_on:POLARSSL_MD5_C:POLARSSL_AES_C:POLARSSL_PEM_C:POLARSSL_FS_IO
+depends_on:POLARSSL_MD5_C:POLARSSL_AES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/keyfile.aes192":"testkey":0
 
 X509 Parse RSA Key #8 (AES-256 Encrypted)
-depends_on:POLARSSL_MD5_C:POLARSSL_AES_C:POLARSSL_PEM_C:POLARSSL_FS_IO
+depends_on:POLARSSL_MD5_C:POLARSSL_AES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/keyfile.aes256":"testkey":0
 
 X509 Parse RSA Key #9 (PKCS#8 wrapped)
@@ -163,11 +163,11 @@
 x509parse_keyfile_rsa:"data_files/format_gen.key":"":0
 
 X509 Parse RSA Key #10 (PKCS#8 encrypted SHA1-3DES)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbe_sha1_3des.key":"PolarSSLTest":0
 
 X509 Parse RSA Key #10.1 (PKCS#8 encrypted SHA1-3DES, wrong PW)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbe_sha1_3des.key":"PolarSSLTes":POLARSSL_ERR_X509_PASSWORD_MISMATCH
 
 X509 Parse RSA Key #10.2 (PKCS#8 encrypted SHA1-3DES, no PW)
@@ -175,15 +175,15 @@
 x509parse_keyfile_rsa:"data_files/pkcs8_pbe_sha1_3des.key":"":POLARSSL_ERR_X509_PASSWORD_REQUIRED
 
 X509 Parse RSA Key #11 (PKCS#8 encrypted SHA1-3DES DER)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbe_sha1_3des.der":"PolarSSLTest":0
 
 X509 Parse RSA Key #12 (PKCS#8 encrypted SHA1-2DES)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbe_sha1_2des.key":"PolarSSLTest":0
 
 X509 Parse RSA Key #12.1 (PKCS#8 encrypted SHA1-2DES, wrong PW)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS12_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbe_sha1_2des.key":"PolarSLTest":POLARSSL_ERR_X509_PASSWORD_MISMATCH
 
 X509 Parse RSA Key #12.2 (PKCS#8 encrypted SHA1-2DES, no PW)
@@ -203,11 +203,11 @@
 x509parse_keyfile_rsa:"data_files/pkcs8_pbe_sha1_rc4_128.key":"":POLARSSL_ERR_X509_PASSWORD_REQUIRED
 
 X509 Parse RSA Key #14 (PKCS#8 encrypted v2 PBDFK2 3DES)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbes2_pbkdf2_3des.key":"PolarSSLTest":0
 
 X509 Parse RSA Key #15 (PKCS#8 encrypted v2 PBDFK2 3DES, wrong PW)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbes2_pbkdf2_3des.key":"PolarSSLTes":POLARSSL_ERR_X509_PASSWORD_MISMATCH
 
 X509 Parse RSA Key #16 (PKCS#8 encrypted v2 PBDFK2 3DES, no PW)
@@ -215,11 +215,11 @@
 x509parse_keyfile_rsa:"data_files/pkcs8_pbes2_pbkdf2_3des.key":"":POLARSSL_ERR_X509_PASSWORD_REQUIRED
 
 X509 Parse RSA Key #17 (PKCS#8 encrypted v2 PBDFK2 3DES DER)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbes2_pbkdf2_3des.der":"PolarSSLTest":0
 
 X509 Parse RSA Key #18 (PKCS#8 encrypted v2 PBDFK2 3DES DER, wrong PW)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbes2_pbkdf2_3des.der":"PolarSSLTes":POLARSSL_ERR_X509_PASSWORD_MISMATCH
 
 X509 Parse RSA Key #19 (PKCS#8 encrypted v2 PBDFK2 3DES DER, no PW)
@@ -227,7 +227,7 @@
 x509parse_keyfile_rsa:"data_files/pkcs8_pbes2_pbkdf2_3des.der":"":POLARSSL_ERR_X509_KEY_INVALID_FORMAT
 
 X509 Parse RSA Key #20 (PKCS#8 encrypted v2 PBDFK2 DES)
-depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C
+depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_PKCS5_C:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_rsa:"data_files/pkcs8_pbes2_pbkdf2_des.key":"PolarSSLTest":0
 
 X509 Parse Public RSA Key #1 (PKCS#8 wrapped)
@@ -267,7 +267,7 @@
 x509parse_keyfile_ec:"data_files/ec_prv.sec1.pem":"NULL":0
 
 X509 Parse EC Key #3 (SEC1 PEM encrypted)
-depends_on:POLARSSL_DES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP192R1_ENABLED
+depends_on:POLARSSL_DES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP192R1_ENABLED:POLARSSL_CIPHER_MODE_CBC
 x509parse_keyfile_ec:"data_files/ec_prv.sec1.pw.pem":"polar":0
 
 X509 Parse EC Key #4 (PKCS8 DER)
diff --git a/tests/suites/test_suite_x509write.data b/tests/suites/test_suite_x509write.data
index fc9bb92..dcb137a 100644
--- a/tests/suites/test_suite_x509write.data
+++ b/tests/suites/test_suite_x509write.data
@@ -27,7 +27,7 @@
 x509_csr_check:"data_files/server1.key":POLARSSL_MD_MD5:"data_files/server1.req.md5"
 
 Certificate write check Server1 SHA1
-depends_on:POLARSSL_SHA1_C:POLARSSL_RSA_C:POLARSSL_PKCS1_V15
+depends_on:POLARSSL_SHA1_C:POLARSSL_RSA_C:POLARSSL_PKCS1_V15:POLARSSL_DES_C:POLARSSL_CIPHER_MODE_CBC:POLARSSL_MD5_C
 x509_crt_check:"data_files/server1.key":"":"C=NL,O=PolarSSL,CN=PolarSSL Server 1":"data_files/test-ca.key":"PolarSSLTest":"C=NL,O=PolarSSL,CN=PolarSSL Test CA":"1":"20110212144406":"20210212144406":POLARSSL_MD_SHA1:"data_files/server1.crt"
 
 Public key write check RSA