diff --git a/library/cipher.c b/library/cipher.c
index 0d1258b..f20cc73 100644
--- a/library/cipher.c
+++ b/library/cipher.c
@@ -86,6 +86,19 @@
         POLARSSL_CIPHER_DES_EDE3_CBC,
 #endif /* defined(POLARSSL_DES_C) */
 
+#if defined(POLARSSL_BLOWFISH_C)
+        POLARSSL_CIPHER_BLOWFISH_CBC,
+
+#if defined(POLARSSL_CIPHER_MODE_CFB)
+        POLARSSL_CIPHER_BLOWFISH_CFB64,
+#endif /* defined(POLARSSL_CIPHER_MODE_CFB) */
+
+#if defined(POLARSSL_CIPHER_MODE_CTR)
+        POLARSSL_CIPHER_BLOWFISH_CTR,
+#endif /* defined(POLARSSL_CIPHER_MODE_CTR) */
+
+#endif /* defined(POLARSSL_BLOWFISH_C) */
+
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
         POLARSSL_CIPHER_NULL,
 #endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
@@ -168,6 +181,22 @@
             return &des_ede3_cbc_info;
 #endif
 
+#if defined(POLARSSL_BLOWFISH_C)
+        case POLARSSL_CIPHER_BLOWFISH_CBC:
+            return &blowfish_cbc_info;
+
+#if defined(POLARSSL_CIPHER_MODE_CFB)
+        case POLARSSL_CIPHER_BLOWFISH_CFB64:
+            return &blowfish_cfb64_info;
+#endif /* defined(POLARSSL_CIPHER_MODE_CFB) */
+
+#if defined(POLARSSL_CIPHER_MODE_CTR)
+        case POLARSSL_CIPHER_BLOWFISH_CTR:
+            return &blowfish_ctr_info;
+#endif /* defined(POLARSSL_CIPHER_MODE_CTR) */
+
+#endif
+
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
         case POLARSSL_CIPHER_NULL:
             return &null_cipher_info;
@@ -247,6 +276,21 @@
         return cipher_info_from_type( POLARSSL_CIPHER_DES_EDE3_CBC );
 #endif
 
+#if defined(POLARSSL_BLOWFISH_C)
+    if( !strcasecmp( "BLOWFISH-CBC", cipher_name ) )
+        return cipher_info_from_type( POLARSSL_CIPHER_BLOWFISH_CBC );
+
+#if defined(POLARSSL_CIPHER_MODE_CFB)
+    if( !strcasecmp( "BLOWFISH-CFB64", cipher_name ) )
+        return cipher_info_from_type( POLARSSL_CIPHER_BLOWFISH_CFB64 );
+#endif /* defined(POLARSSL_CIPHER_MODE_CFB) */
+
+#if defined(POLARSSL_CIPHER_MODE_CTR)
+    if( !strcasecmp( "BLOWFISH-CTR", cipher_name ) )
+        return cipher_info_from_type( POLARSSL_CIPHER_BLOWFISH_CTR );
+#endif /* defined(POLARSSL_CIPHER_MODE_CTR) */
+#endif
+
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
     if( !strcasecmp( "NULL", cipher_name ) )
         return cipher_info_from_type( POLARSSL_CIPHER_NULL );
@@ -295,10 +339,10 @@
 #endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
 
     /*
-     * For CFB128 and CTR mode always use the encryption key schedule
+     * For CFB and CTR mode always use the encryption key schedule
      */
     if( POLARSSL_ENCRYPT == operation ||
-        POLARSSL_MODE_CFB128 == ctx->cipher_info->mode ||
+        POLARSSL_MODE_CFB == ctx->cipher_info->mode ||
         POLARSSL_MODE_CTR == ctx->cipher_info->mode )
     {
         return ctx->cipher_info->base->setkey_enc_func( ctx->cipher_ctx, key,
@@ -421,9 +465,9 @@
         return 0;
     }
 
-    if( ctx->cipher_info->mode == POLARSSL_MODE_CFB128 )
+    if( ctx->cipher_info->mode == POLARSSL_MODE_CFB )
     {
-        if( 0 != ( ret = ctx->cipher_info->base->cfb128_func( ctx->cipher_ctx,
+        if( 0 != ( ret = ctx->cipher_info->base->cfb_func( ctx->cipher_ctx,
                 ctx->operation, ilen, &ctx->unprocessed_len, ctx->iv,
                 input, output ) ) )
         {
@@ -493,7 +537,7 @@
 
     *olen = 0;
 
-    if( POLARSSL_MODE_CFB128 == ctx->cipher_info->mode ||
+    if( POLARSSL_MODE_CFB == ctx->cipher_info->mode ||
         POLARSSL_MODE_CTR == ctx->cipher_info->mode ||
         POLARSSL_MODE_NULL == ctx->cipher_info->mode )
     {
diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c
index 99e5092..6b85903 100644
--- a/library/cipher_wrap.c
+++ b/library/cipher_wrap.c
@@ -45,6 +45,10 @@
 #include "polarssl/des.h"
 #endif
 
+#if defined(POLARSSL_BLOWFISH_C)
+#include "polarssl/blowfish.h"
+#endif
+
 #include <stdlib.h>
 
 #if defined(POLARSSL_AES_C)
@@ -157,7 +161,7 @@
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 const cipher_info_t aes_128_cfb128_info = {
     POLARSSL_CIPHER_AES_128_CFB128,
-    POLARSSL_MODE_CFB128,
+    POLARSSL_MODE_CFB,
     128,
     "AES-128-CFB128",
     16,
@@ -167,7 +171,7 @@
 
 const cipher_info_t aes_192_cfb128_info = {
     POLARSSL_CIPHER_AES_192_CFB128,
-    POLARSSL_MODE_CFB128,
+    POLARSSL_MODE_CFB,
     192,
     "AES-192-CFB128",
     16,
@@ -177,7 +181,7 @@
 
 const cipher_info_t aes_256_cfb128_info = {
     POLARSSL_CIPHER_AES_256_CFB128,
-    POLARSSL_MODE_CFB128,
+    POLARSSL_MODE_CFB,
     256,
     "AES-256-CFB128",
     16,
@@ -330,7 +334,7 @@
 #if defined(POLARSSL_CIPHER_MODE_CFB)
 const cipher_info_t camellia_128_cfb128_info = {
     POLARSSL_CIPHER_CAMELLIA_128_CFB128,
-    POLARSSL_MODE_CFB128,
+    POLARSSL_MODE_CFB,
     128,
     "CAMELLIA-128-CFB128",
     16,
@@ -340,7 +344,7 @@
 
 const cipher_info_t camellia_192_cfb128_info = {
     POLARSSL_CIPHER_CAMELLIA_192_CFB128,
-    POLARSSL_MODE_CFB128,
+    POLARSSL_MODE_CFB,
     192,
     "CAMELLIA-192-CFB128",
     16,
@@ -350,7 +354,7 @@
 
 const cipher_info_t camellia_256_cfb128_info = {
     POLARSSL_CIPHER_CAMELLIA_256_CFB128,
-    POLARSSL_MODE_CFB128,
+    POLARSSL_MODE_CFB,
     256,
     "CAMELLIA-256-CFB128",
     16,
@@ -558,6 +562,118 @@
 };
 #endif
 
+#if defined(POLARSSL_BLOWFISH_C)
+
+int blowfish_crypt_cbc_wrap( void *ctx, operation_t operation, size_t length,
+        unsigned char *iv, const unsigned char *input, unsigned char *output )
+{
+    return blowfish_crypt_cbc( (blowfish_context *) ctx, operation, length, iv, input, output );
+}
+
+int blowfish_crypt_cfb64_wrap( void *ctx, operation_t operation, size_t length,
+        size_t *iv_off, unsigned char *iv, const unsigned char *input, unsigned char *output )
+{
+#if defined(POLARSSL_CIPHER_MODE_CFB)
+    return blowfish_crypt_cfb64( (blowfish_context *) ctx, operation, length, iv_off, iv, input, output );
+#else
+    ((void) ctx);
+    ((void) operation);
+    ((void) length);
+    ((void) iv_off);
+    ((void) iv);
+    ((void) input);
+    ((void) output);
+
+    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+#endif
+}
+
+int blowfish_crypt_ctr_wrap( void *ctx, size_t length,
+        size_t *nc_off, unsigned char *nonce_counter, unsigned char *stream_block,
+        const unsigned char *input, unsigned char *output )
+{
+#if defined(POLARSSL_CIPHER_MODE_CTR)
+    return blowfish_crypt_ctr( (blowfish_context *) ctx, length, nc_off, nonce_counter,
+                          stream_block, input, output );
+#else
+    ((void) ctx);
+    ((void) length);
+    ((void) nc_off);
+    ((void) nonce_counter);
+    ((void) stream_block);
+    ((void) input);
+    ((void) output);
+
+    return POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE;
+#endif
+}
+
+int blowfish_setkey_dec_wrap( void *ctx, const unsigned char *key, unsigned int key_length )
+{
+    return blowfish_setkey( (blowfish_context *) ctx, key, key_length );
+}
+
+int blowfish_setkey_enc_wrap( void *ctx, const unsigned char *key, unsigned int key_length )
+{
+    return blowfish_setkey( (blowfish_context *) ctx, key, key_length );
+}
+
+static void * blowfish_ctx_alloc( void )
+{
+    return malloc( sizeof( blowfish_context ) );
+}
+
+static void blowfish_ctx_free( void *ctx )
+{
+    free( ctx );
+}
+
+const cipher_base_t blowfish_info = {
+    POLARSSL_CIPHER_ID_BLOWFISH,
+    blowfish_crypt_cbc_wrap,
+    blowfish_crypt_cfb64_wrap,
+    blowfish_crypt_ctr_wrap,
+    blowfish_setkey_enc_wrap,
+    blowfish_setkey_dec_wrap,
+    blowfish_ctx_alloc,
+    blowfish_ctx_free
+};
+
+const cipher_info_t blowfish_cbc_info = {
+    POLARSSL_CIPHER_BLOWFISH_CBC,
+    POLARSSL_MODE_CBC,
+    32,
+    "BLOWFISH-CBC",
+    8,
+    8,
+    &blowfish_info
+};
+
+#if defined(POLARSSL_CIPHER_MODE_CFB)
+const cipher_info_t blowfish_cfb64_info = {
+    POLARSSL_CIPHER_BLOWFISH_CFB64,
+    POLARSSL_MODE_CFB,
+    32,
+    "BLOWFISH-CFB64",
+    8,
+    8,
+    &blowfish_info
+};
+#endif /* POLARSSL_CIPHER_MODE_CFB */
+
+#if defined(POLARSSL_CIPHER_MODE_CTR)
+const cipher_info_t blowfish_ctr_info = {
+    POLARSSL_CIPHER_BLOWFISH_CTR,
+    POLARSSL_MODE_CTR,
+    32,
+    "BLOWFISH-CTR",
+    8,
+    8,
+    &blowfish_info
+};
+#endif /* POLARSSL_CIPHER_MODE_CTR */
+#endif /* POLARSSL_BLOWFISH_C */
+
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
 static void * null_ctx_alloc( void )
 {
