diff --git a/ChangeLog b/ChangeLog
index 37308c1..5fd28f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,11 +5,14 @@
    * Parsing of PKCS#8 encrypted private key files
    * PKCS#12 PBE and derivation functions
 
-Change
+Changes
    * HAVEGE random generator disabled by default
    * Internally split up x509parse_key() into a (PEM) handler function
      and specific DER parser functions for the PKCS#1 and unencrypted
      PKCS#8 private key formats
+   * Added mechanism to provide alternative implementations for all
+     symmetric cipher and hash algorithms (e.g. POLARSSL_AES_ALT in
+	 config.h)
 
 Bugfix
    * Secure renegotiation extension should only be sent in case client
diff --git a/include/polarssl/aes.h b/include/polarssl/aes.h
index b79894c..30fdf61 100644
--- a/include/polarssl/aes.h
+++ b/include/polarssl/aes.h
@@ -3,7 +3,7 @@
  *
  * \brief AES block cipher
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_AES_H
 #define POLARSSL_AES_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -42,6 +44,10 @@
 #define POLARSSL_ERR_AES_INVALID_KEY_LENGTH                -0x0020  /**< Invalid key length. */
 #define POLARSSL_ERR_AES_INVALID_INPUT_LENGTH              -0x0022  /**< Invalid data input length. */
 
+#if !defined(POLARSSL_AES_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          AES context structure
  */
@@ -169,6 +175,19 @@
                        unsigned char stream_block[16],
                        const unsigned char *input,
                        unsigned char *output );
+
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_AES_ALT */
+#include "aes_alt.h"
+#endif /* POLARSSL_AES_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Checkup routine
  *
diff --git a/include/polarssl/arc4.h b/include/polarssl/arc4.h
index 7233384..1672fa2 100644
--- a/include/polarssl/arc4.h
+++ b/include/polarssl/arc4.h
@@ -3,7 +3,7 @@
  *
  * \brief The ARCFOUR stream cipher
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,8 +27,14 @@
 #ifndef POLARSSL_ARC4_H
 #define POLARSSL_ARC4_H
 
+#include "config.h"
+
 #include <string.h>
 
+#if !defined(POLARSSL_ARC4_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          ARC4 context structure
  */
@@ -66,6 +72,18 @@
 int arc4_crypt( arc4_context *ctx, size_t length, const unsigned char *input,
                 unsigned char *output );
 
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_ARC4_ALT */
+#include "arc4_alt.h"
+#endif /* POLARSSL_ARC4_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Checkup routine
  *
diff --git a/include/polarssl/blowfish.h b/include/polarssl/blowfish.h
index 313d898..9b269b7 100644
--- a/include/polarssl/blowfish.h
+++ b/include/polarssl/blowfish.h
@@ -3,7 +3,7 @@
  *
  * \brief Blowfish block cipher
  *
- *  Copyright (C) 2012-2012, Brainspark B.V.
+ *  Copyright (C) 2012-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_BLOWFISH_H
 #define POLARSSL_BLOWFISH_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -46,6 +48,10 @@
 #define POLARSSL_ERR_BLOWFISH_INVALID_KEY_LENGTH                -0x0016  /**< Invalid key length. */
 #define POLARSSL_ERR_BLOWFISH_INVALID_INPUT_LENGTH              -0x0018  /**< Invalid data input length. */
 
+#if !defined(POLARSSL_BLOWFISH_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          Blowfish context structure
  */
@@ -158,4 +164,8 @@
 }
 #endif
 
+#else  /* POLARSSL_BLOWFISH_ALT */
+#include "blowfish_alt.h"
+#endif /* POLARSSL_BLOWFISH_ALT */
+
 #endif /* blowfish.h */
diff --git a/include/polarssl/camellia.h b/include/polarssl/camellia.h
index f073d46..050c6cd 100644
--- a/include/polarssl/camellia.h
+++ b/include/polarssl/camellia.h
@@ -3,7 +3,7 @@
  *
  * \brief Camellia block cipher
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_CAMELLIA_H
 #define POLARSSL_CAMELLIA_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -42,6 +44,10 @@
 #define POLARSSL_ERR_CAMELLIA_INVALID_KEY_LENGTH           -0x0024  /**< Invalid key length. */
 #define POLARSSL_ERR_CAMELLIA_INVALID_INPUT_LENGTH         -0x0026  /**< Invalid data input length. */
 
+#if !defined(POLARSSL_CAMELLIA_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          CAMELLIA context structure
  */
@@ -168,6 +174,18 @@
                        const unsigned char *input,
                        unsigned char *output );
 
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_CAMELLIA_ALT */
+#include "camellia_alt.h"
+#endif /* POLARSSL_CAMELLIA_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Checkup routine
  *
diff --git a/include/polarssl/config.h b/include/polarssl/config.h
index 579b5d6..409d756 100644
--- a/include/polarssl/config.h
+++ b/include/polarssl/config.h
@@ -105,6 +105,35 @@
  */
 
 /**
+ * \def POLARSSL_XXX_ALT
+ *
+ * Uncomment a macro to let PolarSSL use your alternate core implementation of
+ * a symmetric or hash algorithm (e.g. platform specific assembly optimized
+ * implementations). Keep in mind that the function prototypes should remain
+ * the same.
+ *
+ * Example: In case you uncomment POLARSSL_AES_ALT, PolarSSL will no longer
+ * provide the "struct aes_context" definition and omit the base function
+ * declarations and implementations. "aes_alt.h" will be included from
+ * "aes.h" to include the new function definitions.
+ *
+ * Uncomment a macro to enable alternate implementation for core algorithm
+ * functions
+#define POLARSSL_AES_ALT
+#define POLARSSL_ARC4_ALT
+#define POLARSSL_BLOWFISH_ALT
+#define POLARSSL_CAMELLIA_ALT
+#define POLARSSL_DES_ALT
+#define POLARSSL_XTEA_ALT
+#define POLARSSL_MD2_ALT
+#define POLARSSL_MD4_ALT
+#define POLARSSL_MD5_ALT
+#define POLARSSL_SHA1_ALT
+#define POLARSSL_SHA2_ALT
+#define POLARSSL_SHA4_ALT
+ */
+
+/**
  * \def POLARSSL_AES_ROM_TABLES
  *
  * Store the AES tables in ROM.
diff --git a/include/polarssl/des.h b/include/polarssl/des.h
index 5eee7ac..d78b568 100644
--- a/include/polarssl/des.h
+++ b/include/polarssl/des.h
@@ -3,7 +3,7 @@
  *
  * \brief DES block cipher
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_DES_H
 #define POLARSSL_DES_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -43,6 +45,10 @@
 
 #define DES_KEY_SIZE    8
 
+#if !defined(POLARSSL_DES_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          DES context structure
  */
@@ -220,6 +226,18 @@
                      const unsigned char *input,
                      unsigned char *output );
 
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_DES_ALT */
+#include "des_alt.h"
+#endif /* POLARSSL_DES_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Checkup routine
  *
diff --git a/include/polarssl/md2.h b/include/polarssl/md2.h
index 1f60470..94f19fc 100644
--- a/include/polarssl/md2.h
+++ b/include/polarssl/md2.h
@@ -3,7 +3,7 @@
  *
  * \brief MD2 message digest algorithm (hash function)
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,10 +27,16 @@
 #ifndef POLARSSL_MD2_H
 #define POLARSSL_MD2_H
 
+#include "config.h"
+
 #include <string.h>
 
 #define POLARSSL_ERR_MD2_FILE_IO_ERROR                 -0x0070  /**< Read/write error in file. */
 
+#if !defined(POLARSSL_MD2_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          MD2 context structure
  */
@@ -74,6 +80,18 @@
  */
 void md2_finish( md2_context *ctx, unsigned char output[16] );
 
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_MD2_ALT */
+#include "md2_alt.h"
+#endif /* POLARSSL_MD2_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Output = MD2( input buffer )
  *
diff --git a/include/polarssl/md4.h b/include/polarssl/md4.h
index 641edf1..56fba2f 100644
--- a/include/polarssl/md4.h
+++ b/include/polarssl/md4.h
@@ -3,7 +3,7 @@
  *
  * \brief MD4 message digest algorithm (hash function)
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_MD4_H
 #define POLARSSL_MD4_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -38,6 +40,10 @@
 
 #define POLARSSL_ERR_MD4_FILE_IO_ERROR                 -0x0072  /**< Read/write error in file. */
 
+#if !defined(POLARSSL_MD4_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          MD4 context structure
  */
@@ -80,6 +86,18 @@
  */
 void md4_finish( md4_context *ctx, unsigned char output[16] );
 
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_MD4_ALT */
+#include "md4_alt.h"
+#endif /* POLARSSL_MD4_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Output = MD4( input buffer )
  *
diff --git a/include/polarssl/md5.h b/include/polarssl/md5.h
index b0611e2..c90789d 100644
--- a/include/polarssl/md5.h
+++ b/include/polarssl/md5.h
@@ -3,7 +3,7 @@
  *
  * \brief MD5 message digest algorithm (hash function)
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_MD5_H
 #define POLARSSL_MD5_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -38,6 +40,10 @@
 
 #define POLARSSL_ERR_MD5_FILE_IO_ERROR                 -0x0074  /**< Read/write error in file. */
 
+#if !defined(POLARSSL_MD5_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          MD5 context structure
  */
@@ -80,6 +86,21 @@
  */
 void md5_finish( md5_context *ctx, unsigned char output[16] );
 
+/* Internal use */
+void md5_process( md5_context *ctx, const unsigned char data[64] );
+
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_MD5_ALT */
+#include "md5_alt.h"
+#endif /* POLARSSL_MD5_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Output = MD5( input buffer )
  *
@@ -154,9 +175,6 @@
  */
 int md5_self_test( int verbose );
 
-/* Internal use */
-void md5_process( md5_context *ctx, const unsigned char data[64] );
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/polarssl/sha1.h b/include/polarssl/sha1.h
index 48da246..81ea77d 100644
--- a/include/polarssl/sha1.h
+++ b/include/polarssl/sha1.h
@@ -3,7 +3,7 @@
  *
  * \brief SHA-1 cryptographic hash function
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_SHA1_H
 #define POLARSSL_SHA1_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -38,6 +40,10 @@
 
 #define POLARSSL_ERR_SHA1_FILE_IO_ERROR                -0x0076  /**< Read/write error in file. */
 
+#if !defined(POLARSSL_SHA1_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          SHA-1 context structure
  */
@@ -80,6 +86,21 @@
  */
 void sha1_finish( sha1_context *ctx, unsigned char output[20] );
 
+/* Internal use */
+void sha1_process( sha1_context *ctx, const unsigned char data[64] );
+
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_SHA1_ALT */
+#include "sha1_alt.h"
+#endif /* POLARSSL_SHA1_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Output = SHA-1( input buffer )
  *
@@ -152,9 +173,6 @@
  */
 int sha1_self_test( int verbose );
 
-/* Internal use */
-void sha1_process( sha1_context *ctx, const unsigned char data[64] );
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/polarssl/sha2.h b/include/polarssl/sha2.h
index 39d9347..795299e 100644
--- a/include/polarssl/sha2.h
+++ b/include/polarssl/sha2.h
@@ -3,7 +3,7 @@
  *
  * \brief SHA-224 and SHA-256 cryptographic hash function
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_SHA2_H
 #define POLARSSL_SHA2_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -38,6 +40,10 @@
 
 #define POLARSSL_ERR_SHA2_FILE_IO_ERROR                -0x0078  /**< Read/write error in file. */
 
+#if !defined(POLARSSL_SHA2_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          SHA-256 context structure
  */
@@ -82,6 +88,21 @@
  */
 void sha2_finish( sha2_context *ctx, unsigned char output[32] );
 
+/* Internal use */
+void sha2_process( sha2_context *ctx, const unsigned char data[64] );
+
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_SHA2_ALT */
+#include "sha2_alt.h"
+#endif /* POLARSSL_SHA2_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Output = SHA-256( input buffer )
  *
@@ -160,9 +181,6 @@
  */
 int sha2_self_test( int verbose );
 
-/* Internal use */
-void sha2_process( sha2_context *ctx, const unsigned char data[64] );
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/polarssl/sha4.h b/include/polarssl/sha4.h
index 6aae124..7b0cdf6 100644
--- a/include/polarssl/sha4.h
+++ b/include/polarssl/sha4.h
@@ -3,7 +3,7 @@
  *
  * \brief SHA-384 and SHA-512 cryptographic hash function
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_SHA4_H
 #define POLARSSL_SHA4_H
 
+#include "config.h"
+
 #include <string.h>
 
 #if defined(_MSC_VER) || defined(__WATCOMC__)
@@ -39,6 +41,10 @@
 
 #define POLARSSL_ERR_SHA4_FILE_IO_ERROR                -0x007A  /**< Read/write error in file. */
 
+#if !defined(POLARSSL_SHA1_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          SHA-512 context structure
  */
@@ -83,6 +89,18 @@
  */
 void sha4_finish( sha4_context *ctx, unsigned char output[64] );
 
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_SHA4_ALT */
+#include "sha4_alt.h"
+#endif /* POLARSSL_SHA4_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Output = SHA-512( input buffer )
  *
diff --git a/include/polarssl/xtea.h b/include/polarssl/xtea.h
index 0db7bc8..c95cb76 100644
--- a/include/polarssl/xtea.h
+++ b/include/polarssl/xtea.h
@@ -3,7 +3,7 @@
  *
  * \brief XTEA block cipher (32-bit)
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -27,6 +27,8 @@
 #ifndef POLARSSL_XTEA_H
 #define POLARSSL_XTEA_H
 
+#include "config.h"
+
 #include <string.h>
 
 #ifdef _MSC_VER
@@ -41,6 +43,10 @@
 
 #define POLARSSL_ERR_XTEA_INVALID_INPUT_LENGTH             -0x0028  /**< The data input has an invalid length. */
 
+#if !defined(POLARSSL_XTEA_ALT)
+// Regular implementation
+//
+
 /**
  * \brief          XTEA context structure
  */
@@ -97,6 +103,18 @@
                     unsigned char *input,
                     unsigned char *output);
 
+#ifdef __cplusplus
+}
+#endif
+
+#else  /* POLARSSL_XTEA_ALT */
+#include "xtea_alt.h"
+#endif /* POLARSSL_XTEA_ALT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * \brief          Checkup routine
  *
diff --git a/library/aes.c b/library/aes.c
index 0295f3f..6456c54 100644
--- a/library/aes.c
+++ b/library/aes.c
@@ -1,7 +1,7 @@
 /*
  *  FIPS-197 compliant AES implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -38,6 +38,8 @@
 #include "polarssl/padlock.h"
 #endif
 
+#if !defined(POLARSSL_AES_ALT)
+
 /*
  * 32-bit integer manipulation macros (little endian)
  */
@@ -914,6 +916,7 @@
     return( 0 );
 }
 #endif /* POLARSSL_CIPHER_MODE_CTR */
+#endif /* !POLARSSL_AES_ALT */
 
 #if defined(POLARSSL_SELF_TEST)
 
diff --git a/library/arc4.c b/library/arc4.c
index 488ddf7..85b78f5 100644
--- a/library/arc4.c
+++ b/library/arc4.c
@@ -1,7 +1,7 @@
 /*
  *  An implementation of the ARCFOUR algorithm
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -34,6 +34,8 @@
 
 #include "polarssl/arc4.h"
 
+#if !defined(POLARSSL_ARC4_ALT)
+
 /*
  * ARC4 key schedule
  */
@@ -95,6 +97,8 @@
     return( 0 );
 }
 
+#endif /* !POLARSSL_ARC4_ALT */
+
 #if defined(POLARSSL_SELF_TEST)
 
 #include <string.h>
diff --git a/library/blowfish.c b/library/blowfish.c
index f55d085..719aea6 100644
--- a/library/blowfish.c
+++ b/library/blowfish.c
@@ -1,7 +1,7 @@
 /*
  *  Blowfish implementation
  *
- *  Copyright (C) 2012-2012, Brainspark B.V.
+ *  Copyright (C) 2012-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -35,6 +35,8 @@
 
 #include "polarssl/blowfish.h"
 
+#if !defined(POLARSSL_BLOWFISH_ALT)
+
 /*
  * 32-bit integer manipulation macros (big endian)
  */
@@ -626,4 +628,5 @@
         0xB74E6132L, 0xCE77E25BL, 0x578FDFE3L, 0x3AC372E6L  }
 };
 
+#endif /* !POLARSSL_BLOWFISH_ALT */
 #endif /* POLARSSL_BLOWFISH_C */
diff --git a/library/camellia.c b/library/camellia.c
index 2bc3443..bb87875 100644
--- a/library/camellia.c
+++ b/library/camellia.c
@@ -1,7 +1,7 @@
 /*
  *  Camellia implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -35,6 +35,8 @@
 
 #include "polarssl/camellia.h"
 
+#if !defined(POLARSSL_CAMELLIA_ALT)
+
 /*
  * 32-bit integer manipulation macros (big endian)
  */
@@ -656,6 +658,7 @@
     return( 0 );
 }
 #endif /* POLARSSL_CIPHER_MODE_CTR */
+#endif /* !POLARSSL_CAMELLIA_ALT */
 
 #if defined(POLARSSL_SELF_TEST)
 
diff --git a/library/des.c b/library/des.c
index 8ae5894..0cf4b3d 100644
--- a/library/des.c
+++ b/library/des.c
@@ -1,7 +1,7 @@
 /*
  *  FIPS-46-3 compliant Triple-DES implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -35,6 +35,8 @@
 
 #include "polarssl/des.h"
 
+#if !defined(POLARSSL_DES_ALT)
+
 /*
  * 32-bit integer manipulation macros (big endian)
  */
@@ -751,6 +753,8 @@
     return( 0 );
 }
 
+#endif /* !POLARSSL_DES_ALT */
+
 #if defined(POLARSSL_SELF_TEST)
 
 #include <stdio.h>
diff --git a/library/md2.c b/library/md2.c
index 954aa07..2c8754a 100644
--- a/library/md2.c
+++ b/library/md2.c
@@ -1,7 +1,7 @@
 /*
  *  RFC 1115/1319 compliant MD2 implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -39,6 +39,8 @@
 #include <stdio.h>
 #endif
 
+#if !defined(POLARSSL_MD2_ALT)
+
 static const unsigned char PI_SUBST[256] =
 {
     0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 0x3D, 0x36,
@@ -163,6 +165,8 @@
     memcpy( output, ctx->state, 16 );
 }
 
+#endif /* !POLARSSL_MD2_ALT */
+
 /*
  * output = MD2( input buffer )
  */
diff --git a/library/md4.c b/library/md4.c
index 82adcd8..980f5e4 100644
--- a/library/md4.c
+++ b/library/md4.c
@@ -1,7 +1,7 @@
 /*
  *  RFC 1186/1320 compliant MD4 implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -39,6 +39,8 @@
 #include <stdio.h>
 #endif
 
+#if !defined(POLARSSL_MD4_ALT)
+
 /*
  * 32-bit integer manipulation macros (little endian)
  */
@@ -259,6 +261,8 @@
     PUT_UINT32_LE( ctx->state[3], output, 12 );
 }
 
+#endif /* !POLARSSL_MD4_ALT */
+
 /*
  * output = MD4( input buffer )
  */
diff --git a/library/md5.c b/library/md5.c
index 3097aeb..b28461e 100644
--- a/library/md5.c
+++ b/library/md5.c
@@ -1,7 +1,7 @@
 /*
  *  RFC 1321 compliant MD5 implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -38,6 +38,8 @@
 #include <stdio.h>
 #endif
 
+#if !defined(POLARSSL_MD5_ALT)
+
 /*
  * 32-bit integer manipulation macros (little endian)
  */
@@ -276,6 +278,8 @@
     PUT_UINT32_LE( ctx->state[3], output, 12 );
 }
 
+#endif /* !POLARSSL_MD5_ALT */
+
 /*
  * output = MD5( input buffer )
  */
diff --git a/library/sha1.c b/library/sha1.c
index 372c0c1..b301b09 100644
--- a/library/sha1.c
+++ b/library/sha1.c
@@ -1,7 +1,7 @@
 /*
  *  FIPS-180-1 compliant SHA-1 implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -38,6 +38,8 @@
 #include <stdio.h>
 #endif
 
+#if !defined(POLARSSL_SHA1_ALT)
+
 /*
  * 32-bit integer manipulation macros (big endian)
  */
@@ -309,6 +311,8 @@
     PUT_UINT32_BE( ctx->state[4], output, 16 );
 }
 
+#endif /* !POLARSSL_SHA1_ALT */
+
 /*
  * output = SHA-1( input buffer )
  */
diff --git a/library/sha2.c b/library/sha2.c
index 7b375ff..20772ec 100644
--- a/library/sha2.c
+++ b/library/sha2.c
@@ -1,7 +1,7 @@
 /*
  *  FIPS-180-2 compliant SHA-256 implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -38,6 +38,8 @@
 #include <stdio.h>
 #endif
 
+#if !defined(POLARSSL_SHA2_ALT)
+
 /*
  * 32-bit integer manipulation macros (big endian)
  */
@@ -310,6 +312,8 @@
         PUT_UINT32_BE( ctx->state[7], output, 28 );
 }
 
+#endif /* !POLARSSL_SHA2_ALT */
+
 /*
  * output = SHA-256( input buffer )
  */
diff --git a/library/sha4.c b/library/sha4.c
index 383b4d2..466420a 100644
--- a/library/sha4.c
+++ b/library/sha4.c
@@ -1,7 +1,7 @@
 /*
  *  FIPS-180-2 compliant SHA-384/512 implementation
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -38,6 +38,8 @@
 #include <stdio.h>
 #endif
 
+#if !defined(POLARSSL_SHA4_ALT)
+
 /*
  * 64-bit integer manipulation macros (big endian)
  */
@@ -308,6 +310,8 @@
     }
 }
 
+#endif /* !POLARSSL_SHA4_ALT */
+
 /*
  * output = SHA-512( input buffer )
  */
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index e0cddf8..cde6795 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2547,11 +2547,15 @@
      *         SHA1( handshake + sender + master + pad1 ) )
      */
 
+#if !defined(POLARSSL_MD5_ALT)
     SSL_DEBUG_BUF( 4, "finished  md5 state", (unsigned char *)
                     md5.state, sizeof(  md5.state ) );
+#endif
 
+#if !defined(POLARSSL_SHA1_ALT)
     SSL_DEBUG_BUF( 4, "finished sha1 state", (unsigned char *)
                    sha1.state, sizeof( sha1.state ) );
+#endif
 
     sender = ( from == SSL_IS_CLIENT ) ? "CLNT"
                                        : "SRVR";
@@ -2618,11 +2622,15 @@
      *               MD5( handshake ) + SHA1( handshake ) )[0..11]
      */
 
+#if !defined(POLARSSL_MD5_ALT)
     SSL_DEBUG_BUF( 4, "finished  md5 state", (unsigned char *)
                     md5.state, sizeof(  md5.state ) );
+#endif
 
+#if !defined(POLARSSL_SHA1_ALT)
     SSL_DEBUG_BUF( 4, "finished sha1 state", (unsigned char *)
                    sha1.state, sizeof( sha1.state ) );
+#endif
 
     sender = ( from == SSL_IS_CLIENT )
              ? "client finished"
@@ -2666,8 +2674,10 @@
      *               Hash( handshake ) )[0.11]
      */
 
+#if !defined(POLARSSL_SHA2_ALT)
     SSL_DEBUG_BUF( 4, "finished sha2 state", (unsigned char *)
                    sha2.state, sizeof( sha2.state ) );
+#endif
 
     sender = ( from == SSL_IS_CLIENT )
              ? "client finished"
@@ -2710,8 +2720,10 @@
      *               Hash( handshake ) )[0.11]
      */
 
+#if !defined(POLARSSL_SHA4_ALT)
     SSL_DEBUG_BUF( 4, "finished sha4 state", (unsigned char *)
                    sha4.state, sizeof( sha4.state ) );
+#endif
 
     sender = ( from == SSL_IS_CLIENT )
              ? "client finished"
diff --git a/library/xtea.c b/library/xtea.c
index b4825dd..f8ab014 100644
--- a/library/xtea.c
+++ b/library/xtea.c
@@ -1,7 +1,7 @@
 /*
  *  An 32-bit implementation of the XTEA algorithm
  *
- *  Copyright (C) 2006-2010, Brainspark B.V.
+ *  Copyright (C) 2006-2013, Brainspark B.V.
  *
  *  This file is part of PolarSSL (http://www.polarssl.org)
  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
@@ -29,6 +29,8 @@
 
 #include "polarssl/xtea.h"
 
+#if !defined(POLARSSL_XTEA_ALT)
+
 /*
  * 32-bit integer manipulation macros (big endian)
  */
@@ -160,6 +162,7 @@
 
     return( 0 );
 }
+#endif /* !POLARSSL_XTEA_ALT */
 
 #if defined(POLARSSL_SELF_TEST)
 
