Add more tests to check setting padding mode

Signed-off-by: Waleed Elmelegy <waleed.elmelegy@arm.com>
diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function
index 3832e58..fdf22a9 100644
--- a/tests/suites/test_suite_cipher.function
+++ b/tests/suites/test_suite_cipher.function
@@ -2,7 +2,6 @@
 #include "mbedtls/cipher.h"
 #include "mbedtls/aes.h"
 
-
 #if defined(MBEDTLS_GCM_C)
 #include "mbedtls/gcm.h"
 #endif
@@ -602,14 +601,12 @@
 
     TEST_ASSERT(0 == mbedtls_cipher_reset(&ctx_dec));
 
-#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
+#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) && defined(MBEDTLS_CIPHER_PADDING_PKCS7)
     if (ctx_dec.cipher_info->mode == MBEDTLS_MODE_CBC) {
-#if defined(MBEDTLS_CIPHER_PADDING_PKCS7)
         TEST_ASSERT(0 == mbedtls_cipher_set_padding_mode(&ctx_dec,
                                                          MBEDTLS_PADDING_PKCS7));
-#endif
     }
-#endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
+#endif
 
 #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
     int expected = (cipher_info->mode == MBEDTLS_MODE_GCM ||
@@ -1213,12 +1210,13 @@
 void check_set_padding(int cipher_id)
 {
     mbedtls_cipher_context_t ctx;
-    unsigned char key[16] = { 0 };
+    unsigned char *key = NULL;
     unsigned char iv[16] = { 0 };
     unsigned char input[16] = { 0 };
     unsigned char output[32] = { 0 };
     size_t outlen = 0;
     const mbedtls_cipher_info_t *cipher_info;
+    size_t keylen = 0;
 
     cipher_info = mbedtls_cipher_info_from_type(cipher_id);
 
@@ -1226,23 +1224,27 @@
         TEST_FAIL("Cipher mode must be CBC");
     }
 
+    keylen = mbedtls_cipher_info_get_key_bitlen(cipher_info);
+    TEST_CALLOC(key, keylen/8);
+    memset(key, 0, keylen/8);
+
     mbedtls_cipher_init(&ctx);
 
     TEST_EQUAL(0, mbedtls_cipher_setup(&ctx, cipher_info));
 
-    TEST_EQUAL(0, mbedtls_cipher_setkey(&ctx, key, 128, MBEDTLS_ENCRYPT));
+    TEST_EQUAL(0, mbedtls_cipher_setkey(&ctx, key, keylen,
+                                        MBEDTLS_ENCRYPT));
 
     TEST_EQUAL(MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA,
                mbedtls_cipher_crypt(&ctx, iv, sizeof(iv), input,
                                     sizeof(input), output, &outlen));
 
-#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
     TEST_EQUAL(0, mbedtls_cipher_set_padding_mode(&ctx, MBEDTLS_PADDING_NONE));
     TEST_EQUAL(0, mbedtls_cipher_crypt(&ctx, iv, sizeof(iv), input,
                                        sizeof(input), output, &outlen));
-#endif
 
 exit:
     mbedtls_cipher_free(&ctx);
+    mbedtls_free(key);
 }
 /* END_CASE */