diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h
index a133ed9..0455efe 100644
--- a/include/mbedtls/cipher.h
+++ b/include/mbedtls/cipher.h
@@ -275,8 +275,8 @@
     /** Name of the cipher. */
     const char *MBEDTLS_PRIVATE(name);
 
-    /** Struct for base cipher information and functions. */
-    const mbedtls_cipher_base_t *MBEDTLS_PRIVATE(base);
+    /** Index to LUT for base cipher information and functions. */
+    uint8_t MBEDTLS_PRIVATE(base_idx) : 5;
 
     /** Full cipher identifier. For example,
      * MBEDTLS_CIPHER_AES_256_CBC.
diff --git a/library/cipher.c b/library/cipher.c
index dfbbbfd..3ed9aef 100644
--- a/library/cipher.c
+++ b/library/cipher.c
@@ -67,6 +67,10 @@
 
 static int supported_init = 0;
 
+static inline const mbedtls_cipher_base_t* mbedtls_cipher_get_base(const mbedtls_cipher_info_t *info) {
+    return mbedtls_cipher_base_lookup_table[info->base_idx];
+}
+
 const int *mbedtls_cipher_list(void)
 {
     const mbedtls_cipher_definition_t *def;
@@ -128,7 +132,7 @@
     const mbedtls_cipher_definition_t *def;
 
     for (def = mbedtls_cipher_definitions; def->info != NULL; def++) {
-        if (def->info->base->cipher == cipher_id &&
+        if (mbedtls_cipher_get_base(def->info)->cipher == cipher_id &&
             mbedtls_cipher_info_get_key_bitlen(def->info) == (unsigned) key_bitlen &&
             def->info->mode == mode) {
             return def->info;
@@ -178,7 +182,7 @@
 #endif
 
     if (ctx->cipher_ctx) {
-        ctx->cipher_info->base->ctx_free_func(ctx->cipher_ctx);
+        mbedtls_cipher_get_base(ctx->cipher_info)->ctx_free_func(ctx->cipher_ctx);
     }
 
     mbedtls_platform_zeroize(ctx, sizeof(mbedtls_cipher_context_t));
@@ -193,7 +197,7 @@
 
     memset(ctx, 0, sizeof(mbedtls_cipher_context_t));
 
-    if (NULL == (ctx->cipher_ctx = cipher_info->base->ctx_alloc_func())) {
+    if (NULL == (ctx->cipher_ctx = mbedtls_cipher_get_base(cipher_info)->ctx_alloc_func())) {
         return MBEDTLS_ERR_CIPHER_ALLOC_FAILED;
     }
 
@@ -337,12 +341,12 @@
         MBEDTLS_MODE_CFB == ctx->cipher_info->mode ||
         MBEDTLS_MODE_OFB == ctx->cipher_info->mode ||
         MBEDTLS_MODE_CTR == ctx->cipher_info->mode) {
-        return ctx->cipher_info->base->setkey_enc_func(ctx->cipher_ctx, key,
+        return mbedtls_cipher_get_base(ctx->cipher_info)->setkey_enc_func(ctx->cipher_ctx, key,
                                                        ctx->key_bitlen);
     }
 
     if (MBEDTLS_DECRYPT == operation) {
-        return ctx->cipher_info->base->setkey_dec_func(ctx->cipher_ctx, key,
+        return mbedtls_cipher_get_base(ctx->cipher_info)->setkey_dec_func(ctx->cipher_ctx, key,
                                                        ctx->key_bitlen);
     }
 
@@ -548,7 +552,7 @@
 
         *olen = ilen;
 
-        if (0 != (ret = ctx->cipher_info->base->ecb_func(ctx->cipher_ctx,
+        if (0 != (ret = mbedtls_cipher_get_base(ctx->cipher_info)->ecb_func(ctx->cipher_ctx,
                                                          ctx->operation, input, output))) {
             return ret;
         }
@@ -614,7 +618,7 @@
             memcpy(&(ctx->unprocessed_data[ctx->unprocessed_len]), input,
                    copy_len);
 
-            if (0 != (ret = ctx->cipher_info->base->cbc_func(ctx->cipher_ctx,
+            if (0 != (ret = mbedtls_cipher_get_base(ctx->cipher_info)->cbc_func(ctx->cipher_ctx,
                                                              ctx->operation, block_size, ctx->iv,
                                                              ctx->unprocessed_data, output))) {
                 return ret;
@@ -654,7 +658,7 @@
          * Process remaining full blocks
          */
         if (ilen) {
-            if (0 != (ret = ctx->cipher_info->base->cbc_func(ctx->cipher_ctx,
+            if (0 != (ret = mbedtls_cipher_get_base(ctx->cipher_info)->cbc_func(ctx->cipher_ctx,
                                                              ctx->operation, ilen, ctx->iv, input,
                                                              output))) {
                 return ret;
@@ -669,7 +673,7 @@
 
 #if defined(MBEDTLS_CIPHER_MODE_CFB)
     if (ctx->cipher_info->mode == MBEDTLS_MODE_CFB) {
-        if (0 != (ret = ctx->cipher_info->base->cfb_func(ctx->cipher_ctx,
+        if (0 != (ret = mbedtls_cipher_get_base(ctx->cipher_info)->cfb_func(ctx->cipher_ctx,
                                                          ctx->operation, ilen,
                                                          &ctx->unprocessed_len, ctx->iv,
                                                          input, output))) {
@@ -684,7 +688,7 @@
 
 #if defined(MBEDTLS_CIPHER_MODE_OFB)
     if (ctx->cipher_info->mode == MBEDTLS_MODE_OFB) {
-        if (0 != (ret = ctx->cipher_info->base->ofb_func(ctx->cipher_ctx,
+        if (0 != (ret = mbedtls_cipher_get_base(ctx->cipher_info)->ofb_func(ctx->cipher_ctx,
                                                          ilen, &ctx->unprocessed_len, ctx->iv,
                                                          input, output))) {
             return ret;
@@ -698,7 +702,7 @@
 
 #if defined(MBEDTLS_CIPHER_MODE_CTR)
     if (ctx->cipher_info->mode == MBEDTLS_MODE_CTR) {
-        if (0 != (ret = ctx->cipher_info->base->ctr_func(ctx->cipher_ctx,
+        if (0 != (ret = mbedtls_cipher_get_base(ctx->cipher_info)->ctr_func(ctx->cipher_ctx,
                                                          ilen, &ctx->unprocessed_len, ctx->iv,
                                                          ctx->unprocessed_data, input, output))) {
             return ret;
@@ -717,7 +721,7 @@
             return MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE;
         }
 
-        ret = ctx->cipher_info->base->xts_func(ctx->cipher_ctx,
+        ret = mbedtls_cipher_get_base(ctx->cipher_info)->xts_func(ctx->cipher_ctx,
                                                ctx->operation, ilen, ctx->iv, input, output);
         if (ret != 0) {
             return ret;
@@ -731,7 +735,7 @@
 
 #if defined(MBEDTLS_CIPHER_MODE_STREAM)
     if (ctx->cipher_info->mode == MBEDTLS_MODE_STREAM) {
-        if (0 != (ret = ctx->cipher_info->base->stream_func(ctx->cipher_ctx,
+        if (0 != (ret = mbedtls_cipher_get_base(ctx->cipher_info)->stream_func(ctx->cipher_ctx,
                                                             ilen, input, output))) {
             return ret;
         }
@@ -996,7 +1000,7 @@
         }
 
         /* cipher block */
-        if (0 != (ret = ctx->cipher_info->base->cbc_func(ctx->cipher_ctx,
+        if (0 != (ret = mbedtls_cipher_get_base(ctx->cipher_info)->cbc_func(ctx->cipher_ctx,
                                                          ctx->operation,
                                                          mbedtls_cipher_get_block_size(ctx),
                                                          ctx->iv,
diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c
index b4f1619..0bb9c02 100644
--- a/library/cipher_wrap.c
+++ b/library/cipher_wrap.c
@@ -70,6 +70,24 @@
 
 #include "mbedtls/platform.h"
 
+#define MBEDTLS_CIPHER_BASE_INDEX_AES 0
+#define MBEDTLS_CIPHER_BASE_INDEX_ARIA 1
+#define MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA 2
+#define MBEDTLS_CIPHER_BASE_INDEX_CCM_AES 3
+#define MBEDTLS_CIPHER_BASE_INDEX_CCM_ARIA 4
+#define MBEDTLS_CIPHER_BASE_INDEX_CCM_CAMELLIA 5
+#define MBEDTLS_CIPHER_BASE_INDEX_CHACHA20_BASE 6
+#define MBEDTLS_CIPHER_BASE_INDEX_CHACHAPOLY_BASE 7
+#define MBEDTLS_CIPHER_BASE_INDEX_DES_EDE3 8
+#define MBEDTLS_CIPHER_BASE_INDEX_DES_EDE 9
+#define MBEDTLS_CIPHER_BASE_INDEX_DES 10
+#define MBEDTLS_CIPHER_BASE_INDEX_GCM_AES 11
+#define MBEDTLS_CIPHER_BASE_INDEX_GCM_ARIA 12
+#define MBEDTLS_CIPHER_BASE_INDEX_GCM_CAMELLIA 13
+#define MBEDTLS_CIPHER_BASE_INDEX_KW_AES 14
+#define MBEDTLS_CIPHER_BASE_INDEX_NULL_BASE 15
+#define MBEDTLS_CIPHER_BASE_INDEX_XTS_AES 16
+
 #if defined(MBEDTLS_GCM_C)
 /* shared by all GCM ciphers */
 static void *gcm_ctx_alloc(void)
@@ -242,7 +260,7 @@
 
 static const mbedtls_cipher_info_t aes_128_ecb_info = {
     "AES-128-ECB",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_128_ECB,
     MBEDTLS_MODE_ECB,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -253,7 +271,7 @@
 
 static const mbedtls_cipher_info_t aes_192_ecb_info = {
     "AES-192-ECB",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_192_ECB,
     MBEDTLS_MODE_ECB,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -264,7 +282,7 @@
 
 static const mbedtls_cipher_info_t aes_256_ecb_info = {
     "AES-256-ECB",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_256_ECB,
     MBEDTLS_MODE_ECB,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -276,7 +294,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CBC)
 static const mbedtls_cipher_info_t aes_128_cbc_info = {
     "AES-128-CBC",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_128_CBC,
     MBEDTLS_MODE_CBC,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -287,7 +305,7 @@
 
 static const mbedtls_cipher_info_t aes_192_cbc_info = {
     "AES-192-CBC",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_192_CBC,
     MBEDTLS_MODE_CBC,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -298,7 +316,7 @@
 
 static const mbedtls_cipher_info_t aes_256_cbc_info = {
     "AES-256-CBC",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_256_CBC,
     MBEDTLS_MODE_CBC,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -311,7 +329,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CFB)
 static const mbedtls_cipher_info_t aes_128_cfb128_info = {
     "AES-128-CFB128",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_128_CFB128,
     MBEDTLS_MODE_CFB,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -322,7 +340,7 @@
 
 static const mbedtls_cipher_info_t aes_192_cfb128_info = {
     "AES-192-CFB128",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_192_CFB128,
     MBEDTLS_MODE_CFB,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -333,7 +351,7 @@
 
 static const mbedtls_cipher_info_t aes_256_cfb128_info = {
     "AES-256-CFB128",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_256_CFB128,
     MBEDTLS_MODE_CFB,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -346,7 +364,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_OFB)
 static const mbedtls_cipher_info_t aes_128_ofb_info = {
     "AES-128-OFB",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_128_OFB,
     MBEDTLS_MODE_OFB,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -357,7 +375,7 @@
 
 static const mbedtls_cipher_info_t aes_192_ofb_info = {
     "AES-192-OFB",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_192_OFB,
     MBEDTLS_MODE_OFB,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -368,7 +386,7 @@
 
 static const mbedtls_cipher_info_t aes_256_ofb_info = {
     "AES-256-OFB",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_256_OFB,
     MBEDTLS_MODE_OFB,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -381,7 +399,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CTR)
 static const mbedtls_cipher_info_t aes_128_ctr_info = {
     "AES-128-CTR",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_128_CTR,
     MBEDTLS_MODE_CTR,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -392,7 +410,7 @@
 
 static const mbedtls_cipher_info_t aes_192_ctr_info = {
     "AES-192-CTR",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_192_CTR,
     MBEDTLS_MODE_CTR,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -403,7 +421,7 @@
 
 static const mbedtls_cipher_info_t aes_256_ctr_info = {
     "AES-256-CTR",
-    &aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_AES,
     MBEDTLS_CIPHER_AES_256_CTR,
     MBEDTLS_MODE_CTR,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -480,7 +498,7 @@
 
 static const mbedtls_cipher_info_t aes_128_xts_info = {
     "AES-128-XTS",
-    &xts_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_XTS_AES,
     MBEDTLS_CIPHER_AES_128_XTS,
     MBEDTLS_MODE_XTS,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -491,7 +509,7 @@
 
 static const mbedtls_cipher_info_t aes_256_xts_info = {
     "AES-256-XTS",
-    &xts_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_XTS_AES,
     MBEDTLS_CIPHER_AES_256_XTS,
     MBEDTLS_MODE_XTS,
     512 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -538,7 +556,7 @@
 
 static const mbedtls_cipher_info_t aes_128_gcm_info = {
     "AES-128-GCM",
-    &gcm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_AES,
     MBEDTLS_CIPHER_AES_128_GCM,
     MBEDTLS_MODE_GCM,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -549,7 +567,7 @@
 
 static const mbedtls_cipher_info_t aes_192_gcm_info = {
     "AES-192-GCM",
-    &gcm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_AES,
     MBEDTLS_CIPHER_AES_192_GCM,
     MBEDTLS_MODE_GCM,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -560,7 +578,7 @@
 
 static const mbedtls_cipher_info_t aes_256_gcm_info = {
     "AES-256-GCM",
-    &gcm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_AES,
     MBEDTLS_CIPHER_AES_256_GCM,
     MBEDTLS_MODE_GCM,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -607,7 +625,7 @@
 
 static const mbedtls_cipher_info_t aes_128_ccm_info = {
     "AES-128-CCM",
-    &ccm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_AES,
     MBEDTLS_CIPHER_AES_128_CCM,
     MBEDTLS_MODE_CCM,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -618,7 +636,7 @@
 
 static const mbedtls_cipher_info_t aes_192_ccm_info = {
     "AES-192-CCM",
-    &ccm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_AES,
     MBEDTLS_CIPHER_AES_192_CCM,
     MBEDTLS_MODE_CCM,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -629,7 +647,7 @@
 
 static const mbedtls_cipher_info_t aes_256_ccm_info = {
     "AES-256-CCM",
-    &ccm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_AES,
     MBEDTLS_CIPHER_AES_256_CCM,
     MBEDTLS_MODE_CCM,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -640,7 +658,7 @@
 
 static const mbedtls_cipher_info_t aes_128_ccm_star_no_tag_info = {
     "AES-128-CCM*-NO-TAG",
-    &ccm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_AES,
     MBEDTLS_CIPHER_AES_128_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -651,7 +669,7 @@
 
 static const mbedtls_cipher_info_t aes_192_ccm_star_no_tag_info = {
     "AES-192-CCM*-NO-TAG",
-    &ccm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_AES,
     MBEDTLS_CIPHER_AES_192_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -662,7 +680,7 @@
 
 static const mbedtls_cipher_info_t aes_256_ccm_star_no_tag_info = {
     "AES-256-CCM*-NO-TAG",
-    &ccm_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_AES,
     MBEDTLS_CIPHER_AES_256_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -774,7 +792,7 @@
 
 static const mbedtls_cipher_info_t camellia_128_ecb_info = {
     "CAMELLIA-128-ECB",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_128_ECB,
     MBEDTLS_MODE_ECB,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -785,7 +803,7 @@
 
 static const mbedtls_cipher_info_t camellia_192_ecb_info = {
     "CAMELLIA-192-ECB",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_192_ECB,
     MBEDTLS_MODE_ECB,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -796,7 +814,7 @@
 
 static const mbedtls_cipher_info_t camellia_256_ecb_info = {
     "CAMELLIA-256-ECB",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_256_ECB,
     MBEDTLS_MODE_ECB,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -808,7 +826,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CBC)
 static const mbedtls_cipher_info_t camellia_128_cbc_info = {
     "CAMELLIA-128-CBC",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_128_CBC,
     MBEDTLS_MODE_CBC,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -819,7 +837,7 @@
 
 static const mbedtls_cipher_info_t camellia_192_cbc_info = {
     "CAMELLIA-192-CBC",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_192_CBC,
     MBEDTLS_MODE_CBC,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -830,7 +848,7 @@
 
 static const mbedtls_cipher_info_t camellia_256_cbc_info = {
     "CAMELLIA-256-CBC",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_256_CBC,
     MBEDTLS_MODE_CBC,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -843,7 +861,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CFB)
 static const mbedtls_cipher_info_t camellia_128_cfb128_info = {
     "CAMELLIA-128-CFB128",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_128_CFB128,
     MBEDTLS_MODE_CFB,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -854,7 +872,7 @@
 
 static const mbedtls_cipher_info_t camellia_192_cfb128_info = {
     "CAMELLIA-192-CFB128",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_192_CFB128,
     MBEDTLS_MODE_CFB,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -865,7 +883,7 @@
 
 static const mbedtls_cipher_info_t camellia_256_cfb128_info = {
     "CAMELLIA-256-CFB128",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_256_CFB128,
     MBEDTLS_MODE_CFB,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -878,7 +896,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CTR)
 static const mbedtls_cipher_info_t camellia_128_ctr_info = {
     "CAMELLIA-128-CTR",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_128_CTR,
     MBEDTLS_MODE_CTR,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -889,7 +907,7 @@
 
 static const mbedtls_cipher_info_t camellia_192_ctr_info = {
     "CAMELLIA-192-CTR",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_192_CTR,
     MBEDTLS_MODE_CTR,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -900,7 +918,7 @@
 
 static const mbedtls_cipher_info_t camellia_256_ctr_info = {
     "CAMELLIA-256-CTR",
-    &camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_256_CTR,
     MBEDTLS_MODE_CTR,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -947,7 +965,7 @@
 
 static const mbedtls_cipher_info_t camellia_128_gcm_info = {
     "CAMELLIA-128-GCM",
-    &gcm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_128_GCM,
     MBEDTLS_MODE_GCM,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -958,7 +976,7 @@
 
 static const mbedtls_cipher_info_t camellia_192_gcm_info = {
     "CAMELLIA-192-GCM",
-    &gcm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_192_GCM,
     MBEDTLS_MODE_GCM,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -969,7 +987,7 @@
 
 static const mbedtls_cipher_info_t camellia_256_gcm_info = {
     "CAMELLIA-256-GCM",
-    &gcm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_256_GCM,
     MBEDTLS_MODE_GCM,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1016,7 +1034,7 @@
 
 static const mbedtls_cipher_info_t camellia_128_ccm_info = {
     "CAMELLIA-128-CCM",
-    &ccm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_128_CCM,
     MBEDTLS_MODE_CCM,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1027,7 +1045,7 @@
 
 static const mbedtls_cipher_info_t camellia_192_ccm_info = {
     "CAMELLIA-192-CCM",
-    &ccm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_192_CCM,
     MBEDTLS_MODE_CCM,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1038,7 +1056,7 @@
 
 static const mbedtls_cipher_info_t camellia_256_ccm_info = {
     "CAMELLIA-256-CCM",
-    &ccm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_256_CCM,
     MBEDTLS_MODE_CCM,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1049,7 +1067,7 @@
 
 static const mbedtls_cipher_info_t camellia_128_ccm_star_no_tag_info = {
     "CAMELLIA-128-CCM*-NO-TAG",
-    &ccm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_128_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1060,7 +1078,7 @@
 
 static const mbedtls_cipher_info_t camellia_192_ccm_star_no_tag_info = {
     "CAMELLIA-192-CCM*-NO-TAG",
-    &ccm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_192_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1071,7 +1089,7 @@
 
 static const mbedtls_cipher_info_t camellia_256_ccm_star_no_tag_info = {
     "CAMELLIA-256-CCM*-NO-TAG",
-    &ccm_camellia_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_CAMELLIA,
     MBEDTLS_CIPHER_CAMELLIA_256_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1184,7 +1202,7 @@
 
 static const mbedtls_cipher_info_t aria_128_ecb_info = {
     "ARIA-128-ECB",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_128_ECB,
     MBEDTLS_MODE_ECB,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1195,7 +1213,7 @@
 
 static const mbedtls_cipher_info_t aria_192_ecb_info = {
     "ARIA-192-ECB",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_192_ECB,
     MBEDTLS_MODE_ECB,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1206,7 +1224,7 @@
 
 static const mbedtls_cipher_info_t aria_256_ecb_info = {
     "ARIA-256-ECB",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_256_ECB,
     MBEDTLS_MODE_ECB,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1218,7 +1236,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CBC)
 static const mbedtls_cipher_info_t aria_128_cbc_info = {
     "ARIA-128-CBC",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_128_CBC,
     MBEDTLS_MODE_CBC,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1229,7 +1247,7 @@
 
 static const mbedtls_cipher_info_t aria_192_cbc_info = {
     "ARIA-192-CBC",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_192_CBC,
     MBEDTLS_MODE_CBC,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1240,7 +1258,7 @@
 
 static const mbedtls_cipher_info_t aria_256_cbc_info = {
     "ARIA-256-CBC",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_256_CBC,
     MBEDTLS_MODE_CBC,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1253,7 +1271,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CFB)
 static const mbedtls_cipher_info_t aria_128_cfb128_info = {
     "ARIA-128-CFB128",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_128_CFB128,
     MBEDTLS_MODE_CFB,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1264,7 +1282,7 @@
 
 static const mbedtls_cipher_info_t aria_192_cfb128_info = {
     "ARIA-192-CFB128",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_192_CFB128,
     MBEDTLS_MODE_CFB,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1275,7 +1293,7 @@
 
 static const mbedtls_cipher_info_t aria_256_cfb128_info = {
     "ARIA-256-CFB128",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_256_CFB128,
     MBEDTLS_MODE_CFB,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1288,7 +1306,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CTR)
 static const mbedtls_cipher_info_t aria_128_ctr_info = {
     "ARIA-128-CTR",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_128_CTR,
     MBEDTLS_MODE_CTR,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1299,7 +1317,7 @@
 
 static const mbedtls_cipher_info_t aria_192_ctr_info = {
     "ARIA-192-CTR",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_192_CTR,
     MBEDTLS_MODE_CTR,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1310,7 +1328,7 @@
 
 static const mbedtls_cipher_info_t aria_256_ctr_info = {
     "ARIA-256-CTR",
-    &aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_ARIA,
     MBEDTLS_CIPHER_ARIA_256_CTR,
     MBEDTLS_MODE_CTR,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1357,7 +1375,7 @@
 
 static const mbedtls_cipher_info_t aria_128_gcm_info = {
     "ARIA-128-GCM",
-    &gcm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_ARIA,
     MBEDTLS_CIPHER_ARIA_128_GCM,
     MBEDTLS_MODE_GCM,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1368,7 +1386,7 @@
 
 static const mbedtls_cipher_info_t aria_192_gcm_info = {
     "ARIA-192-GCM",
-    &gcm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_ARIA,
     MBEDTLS_CIPHER_ARIA_192_GCM,
     MBEDTLS_MODE_GCM,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1379,7 +1397,7 @@
 
 static const mbedtls_cipher_info_t aria_256_gcm_info = {
     "ARIA-256-GCM",
-    &gcm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_GCM_ARIA,
     MBEDTLS_CIPHER_ARIA_256_GCM,
     MBEDTLS_MODE_GCM,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1426,7 +1444,7 @@
 
 static const mbedtls_cipher_info_t aria_128_ccm_info = {
     "ARIA-128-CCM",
-    &ccm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_ARIA,
     MBEDTLS_CIPHER_ARIA_128_CCM,
     MBEDTLS_MODE_CCM,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1437,7 +1455,7 @@
 
 static const mbedtls_cipher_info_t aria_192_ccm_info = {
     "ARIA-192-CCM",
-    &ccm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_ARIA,
     MBEDTLS_CIPHER_ARIA_192_CCM,
     MBEDTLS_MODE_CCM,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1448,7 +1466,7 @@
 
 static const mbedtls_cipher_info_t aria_256_ccm_info = {
     "ARIA-256-CCM",
-    &ccm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_ARIA,
     MBEDTLS_CIPHER_ARIA_256_CCM,
     MBEDTLS_MODE_CCM,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1459,7 +1477,7 @@
 
 static const mbedtls_cipher_info_t aria_128_ccm_star_no_tag_info = {
     "ARIA-128-CCM*-NO-TAG",
-    &ccm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_ARIA,
     MBEDTLS_CIPHER_ARIA_128_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1470,7 +1488,7 @@
 
 static const mbedtls_cipher_info_t aria_192_ccm_star_no_tag_info = {
     "ARIA-192-CCM*-NO-TAG",
-    &ccm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_ARIA,
     MBEDTLS_CIPHER_ARIA_192_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1481,7 +1499,7 @@
 
 static const mbedtls_cipher_info_t aria_256_ccm_star_no_tag_info = {
     "ARIA-256-CCM*-NO-TAG",
-    &ccm_aria_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CCM_ARIA,
     MBEDTLS_CIPHER_ARIA_256_CCM_STAR_NO_TAG,
     MBEDTLS_MODE_CCM_STAR_NO_TAG,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1643,7 +1661,7 @@
 
 static const mbedtls_cipher_info_t des_ecb_info = {
     "DES-ECB",
-    &des_info,
+    MBEDTLS_CIPHER_BASE_INDEX_DES,
     MBEDTLS_CIPHER_DES_ECB,
     MBEDTLS_MODE_ECB,
     MBEDTLS_KEY_LENGTH_DES >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1655,7 +1673,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CBC)
 static const mbedtls_cipher_info_t des_cbc_info = {
     "DES-CBC",
-    &des_info,
+    MBEDTLS_CIPHER_BASE_INDEX_DES,
     MBEDTLS_CIPHER_DES_CBC,
     MBEDTLS_MODE_CBC,
     MBEDTLS_KEY_LENGTH_DES >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1694,7 +1712,7 @@
 
 static const mbedtls_cipher_info_t des_ede_ecb_info = {
     "DES-EDE-ECB",
-    &des_ede_info,
+    MBEDTLS_CIPHER_BASE_INDEX_DES_EDE,
     MBEDTLS_CIPHER_DES_EDE_ECB,
     MBEDTLS_MODE_ECB,
     MBEDTLS_KEY_LENGTH_DES_EDE >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1706,7 +1724,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CBC)
 static const mbedtls_cipher_info_t des_ede_cbc_info = {
     "DES-EDE-CBC",
-    &des_ede_info,
+    MBEDTLS_CIPHER_BASE_INDEX_DES_EDE,
     MBEDTLS_CIPHER_DES_EDE_CBC,
     MBEDTLS_MODE_CBC,
     MBEDTLS_KEY_LENGTH_DES_EDE >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1745,7 +1763,7 @@
 
 static const mbedtls_cipher_info_t des_ede3_ecb_info = {
     "DES-EDE3-ECB",
-    &des_ede3_info,
+    MBEDTLS_CIPHER_BASE_INDEX_DES_EDE3,
     MBEDTLS_CIPHER_DES_EDE3_ECB,
     MBEDTLS_MODE_ECB,
     MBEDTLS_KEY_LENGTH_DES_EDE3 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1756,7 +1774,7 @@
 #if defined(MBEDTLS_CIPHER_MODE_CBC)
 static const mbedtls_cipher_info_t des_ede3_cbc_info = {
     "DES-EDE3-CBC",
-    &des_ede3_info,
+    MBEDTLS_CIPHER_BASE_INDEX_DES_EDE3,
     MBEDTLS_CIPHER_DES_EDE3_CBC,
     MBEDTLS_MODE_CBC,
     MBEDTLS_KEY_LENGTH_DES_EDE3 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1845,7 +1863,7 @@
 };
 static const mbedtls_cipher_info_t chacha20_info = {
     "CHACHA20",
-    &chacha20_base_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CHACHA20_BASE,
     MBEDTLS_CIPHER_CHACHA20,
     MBEDTLS_MODE_STREAM,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1920,7 +1938,7 @@
 };
 static const mbedtls_cipher_info_t chachapoly_info = {
     "CHACHA20-POLY1305",
-    &chachapoly_base_info,
+    MBEDTLS_CIPHER_BASE_INDEX_CHACHAPOLY_BASE,
     MBEDTLS_CIPHER_CHACHA20_POLY1305,
     MBEDTLS_MODE_CHACHAPOLY,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -1989,7 +2007,7 @@
 
 static const mbedtls_cipher_info_t null_cipher_info = {
     "NULL",
-    &null_base_info,
+    MBEDTLS_CIPHER_BASE_INDEX_NULL_BASE,
     MBEDTLS_CIPHER_NULL,
     MBEDTLS_MODE_STREAM,
     0 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -2060,7 +2078,7 @@
 
 static const mbedtls_cipher_info_t aes_128_nist_kw_info = {
     "AES-128-KW",
-    &kw_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_KW_AES,
     MBEDTLS_CIPHER_AES_128_KW,
     MBEDTLS_MODE_KW,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -2071,7 +2089,7 @@
 
 static const mbedtls_cipher_info_t aes_192_nist_kw_info = {
     "AES-192-KW",
-    &kw_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_KW_AES,
     MBEDTLS_CIPHER_AES_192_KW,
     MBEDTLS_MODE_KW,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -2082,7 +2100,7 @@
 
 static const mbedtls_cipher_info_t aes_256_nist_kw_info = {
     "AES-256-KW",
-    &kw_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_KW_AES,
     MBEDTLS_CIPHER_AES_256_KW,
     MBEDTLS_MODE_KW,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -2093,7 +2111,7 @@
 
 static const mbedtls_cipher_info_t aes_128_nist_kwp_info = {
     "AES-128-KWP",
-    &kw_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_KW_AES,
     MBEDTLS_CIPHER_AES_128_KWP,
     MBEDTLS_MODE_KWP,
     128 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -2104,7 +2122,7 @@
 
 static const mbedtls_cipher_info_t aes_192_nist_kwp_info = {
     "AES-192-KWP",
-    &kw_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_KW_AES,
     MBEDTLS_CIPHER_AES_192_KWP,
     MBEDTLS_MODE_KWP,
     192 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -2115,7 +2133,7 @@
 
 static const mbedtls_cipher_info_t aes_256_nist_kwp_info = {
     "AES-256-KWP",
-    &kw_aes_info,
+    MBEDTLS_CIPHER_BASE_INDEX_KW_AES,
     MBEDTLS_CIPHER_AES_256_KWP,
     MBEDTLS_MODE_KWP,
     256 >> MBEDTLS_KEY_BITLEN_SHIFT,
@@ -2277,4 +2295,92 @@
                      sizeof(mbedtls_cipher_definitions[0]))
 int mbedtls_cipher_supported[NUM_CIPHERS];
 
+const mbedtls_cipher_base_t* mbedtls_cipher_base_lookup_table[] = {
+#if defined(MBEDTLS_AES_C)
+    &aes_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_ARIA_C)
+    &aria_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_CAMELLIA_C)
+    &camellia_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_CCM_C)
+    &ccm_aes_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_CCM_C)
+    &ccm_aria_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_CCM_C)
+    &ccm_camellia_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_CHACHA20_C)
+    &chacha20_base_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_CHACHAPOLY_C)
+    &chachapoly_base_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_DES_C)
+    &des_ede3_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_DES_C)
+    &des_ede_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_DES_C)
+    &des_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_GCM_C)
+    &gcm_aes_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_GCM_C)
+    &gcm_aria_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_GCM_C)
+    &gcm_camellia_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_NIST_KW_C)
+    &kw_aes_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
+    &null_base_info,
+#else
+    NULL,
+#endif
+#if defined(MBEDTLS_CIPHER_MODE_XTS)
+    &xts_aes_info,
+#else
+    NULL,
+#endif
+};
+
 #endif /* MBEDTLS_CIPHER_C */
diff --git a/library/cipher_wrap.h b/library/cipher_wrap.h
index 052cddb..06c8108 100644
--- a/library/cipher_wrap.h
+++ b/library/cipher_wrap.h
@@ -135,6 +135,8 @@
 
 extern int mbedtls_cipher_supported[];
 
+extern const mbedtls_cipher_base_t * mbedtls_cipher_base_lookup_table[];
+
 #ifdef __cplusplus
 }
 #endif
