diff --git a/ChangeLog b/ChangeLog
index ae404d8..e59e4de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -46,6 +46,7 @@
      in SSL/TLS
    * Revamped x509_verify() and the SSL f_vrfy callback implementations
    * Moved from unsigned long to fixed width uint32_t types throughout code
+   * Renamed ciphersuites naming scheme to IANA reserved names
 
 Bugfix
    * Fixed handling error in mpi_cmp_mpi() on longer B values (found by
diff --git a/include/polarssl/config.h b/include/polarssl/config.h
index c251eab..09b10c2 100644
--- a/include/polarssl/config.h
+++ b/include/polarssl/config.h
@@ -137,9 +137,9 @@
  *
  * Requires POLARSSL_ENABLE_WEAK_CIPHERSUITES as well to enable
  * the following ciphersuites:
- *      SSL_RSA_NULL_MD5
- *      SSL_RSA_NULL_SHA
- *      SSL_RSA_NULL_SHA256
+ *      TLS_RSA_WITH_NULL_MD5
+ *      TLS_RSA_WITH_NULL_SHA
+ *      TLS_RSA_WITH_NULL_SHA256
  *
  * Uncomment this macro to enable the NULL cipher and ciphersuites
 #define POLARSSL_CIPHER_NULL_CIPHER
@@ -148,13 +148,13 @@
 /**
  * \def POLARSSL_ENABLE_WEAK_CIPHERSUITES
  *
- * Enable weak ciphersuites in SSL / TLS (like RC4_40)
+ * Enable weak ciphersuites in SSL / TLS
  * Warning: Only do so when you know what you are doing. This allows for
  * channels without virtually no security at all!
  *
  * This enables the following ciphersuites:
- *      SSL_RSA_DES_SHA
- *      SSL_EDH_RSA_DES_SHA
+ *      TLS_RSA_WITH_DES_CBC_SHA
+ *      TLS_DHE_RSA_WITH_DES_CBC_SHA
  *
  * Uncomment this macro to enable weak ciphersuites
 #define POLARSSL_ENABLE_WEAK_CIPHERSUITES
@@ -282,10 +282,18 @@
  *          library/pem.c
  *          library/ctr_drbg.c
  *
- * This module enables the following ciphersuites:
- *      SSL_RSA_AES_128_SHA
- *      SSL_RSA_AES_256_SHA
- *      SSL_EDH_RSA_AES_256_SHA
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      TLS_RSA_WITH_AES_128_CBC_SHA
+ *      TLS_RSA_WITH_AES_256_CBC_SHA
+ *      TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+ *      TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+ *      TLS_RSA_WITH_AES_128_CBC_SHA256
+ *      TLS_RSA_WITH_AES_256_CBC_SHA256
+ *      TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
+ *      TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
+ *      TLS_RSA_WITH_AES_128_GCM_SHA256
+ *      TLS_RSA_WITH_AES_256_GCM_SHA384
  */
 #define POLARSSL_AES_C
 
@@ -298,8 +306,8 @@
  * Caller:  library/ssl_tls.c
  *
  * This module enables the following ciphersuites:
- *      SSL_RSA_RC4_128_MD5
- *      SSL_RSA_RC4_128_SHA
+ *      TLS_RSA_WITH_RC4_128_MD5
+ *      TLS_RSA_WITH_RC4_128_SHA
  */
 #define POLARSSL_ARC4_C
 
@@ -366,10 +374,16 @@
  * Module:  library/camellia.c
  * Caller:  library/ssl_tls.c
  *
- * This module enabled the following cipher suites:
- *      SSL_RSA_CAMELLIA_128_SHA
- *      SSL_RSA_CAMELLIA_256_SHA
- *      SSL_EDH_RSA_CAMELLIA_256_SHA
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
+ *      TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
+ *      TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
+ *      TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
+ *      TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
+ *      TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
  */
 #define POLARSSL_CAMELLIA_C
 
@@ -433,9 +447,10 @@
  * Module:  library/des.c
  * Caller:  library/ssl_tls.c
  *
- * This module enables the following ciphersuites:
- *      SSL_RSA_DES_168_SHA
- *      SSL_EDH_RSA_DES_168_SHA
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      TLS_RSA_WITH_3DES_EDE_CBC_SHA
+ *      TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
  */
 #define POLARSSL_DES_C
 
@@ -448,10 +463,20 @@
  * Caller:  library/ssl_cli.c
  *          library/ssl_srv.c
  *
- * This module enables the following ciphersuites:
- *      SSL_EDH_RSA_DES_168_SHA
- *      SSL_EDH_RSA_AES_256_SHA
- *      SSL_EDH_RSA_CAMELLIA_256_SHA
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      TLS_DHE_RSA_WITH_DES_CBC_SHA
+ *      TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
+ *      TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+ *      TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+ *      TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
+ *      TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
+ *      TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
+ *      TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
+ *      TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
+ *      TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
+ *      TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  */
 #define POLARSSL_DHM_C
 
@@ -489,6 +514,11 @@
  * Module:  library/gcm.c
  *
  * Requires: POLARSSL_AES_C
+ *
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      TLS_RSA_WITH_AES_128_GCM_SHA256
+ *      TLS_RSA_WITH_AES_256_GCM_SHA384
  */
 #define POLARSSL_GCM_C
 
diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h
index 8a1c19d..c7da8c4 100644
--- a/include/polarssl/ssl.h
+++ b/include/polarssl/ssl.h
@@ -140,42 +140,42 @@
 #define SSL_BUFFER_LEN (SSL_MAX_CONTENT_LEN + SSL_COMPRESSION_ADD + 512)
 
 /*
- * Supported ciphersuites
+ * Supported ciphersuites (Official IANA names)
  */
-#define SSL_RSA_NULL_MD5             0x01   /**< Weak! */
-#define SSL_RSA_NULL_SHA             0x02   /**< Weak! */
-#define SSL_RSA_NULL_SHA256          0x3B   /**< Weak! */
-#define SSL_RSA_DES_SHA              0x09   /**< Weak! Not in TLS 1.2 */
-#define SSL_EDH_RSA_DES_SHA          0x15   /**< Weak! Not in TLS 1.2 */
+#define TLS_RSA_WITH_NULL_MD5                    0x01   /**< Weak! */
+#define TLS_RSA_WITH_NULL_SHA                    0x02   /**< Weak! */
+#define TLS_RSA_WITH_NULL_SHA256                 0x3B   /**< Weak! */
+#define TLS_RSA_WITH_DES_CBC_SHA                 0x09   /**< Weak! Not in TLS 1.2 */
+#define TLS_DHE_RSA_WITH_DES_CBC_SHA             0x15   /**< Weak! Not in TLS 1.2 */
 
-#define SSL_RSA_RC4_128_MD5          0x04
-#define SSL_RSA_RC4_128_SHA          0x05
+#define TLS_RSA_WITH_RC4_128_MD5                 0x04
+#define TLS_RSA_WITH_RC4_128_SHA                 0x05
 
-#define SSL_RSA_DES_168_SHA          0x0A
-#define SSL_EDH_RSA_DES_168_SHA      0x16
+#define TLS_RSA_WITH_3DES_EDE_CBC_SHA            0x0A
+#define TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA        0x16
 
-#define SSL_RSA_AES_128_SHA          0x2F
-#define SSL_EDH_RSA_AES_128_SHA      0x33
-#define SSL_RSA_AES_256_SHA          0x35
-#define SSL_EDH_RSA_AES_256_SHA      0x39
-#define SSL_RSA_AES_128_SHA256       0x3C   /**< TLS 1.2 */
-#define SSL_RSA_AES_256_SHA256       0x3D   /**< TLS 1.2 */
-#define SSL_EDH_RSA_AES_128_SHA256   0x67   /**< TLS 1.2 */
-#define SSL_EDH_RSA_AES_256_SHA256   0x6B   /**< TLS 1.2 */
+#define TLS_RSA_WITH_AES_128_CBC_SHA             0x2F
+#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA         0x33
+#define TLS_RSA_WITH_AES_256_CBC_SHA             0x35
+#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA         0x39
+#define TLS_RSA_WITH_AES_128_CBC_SHA256          0x3C   /**< TLS 1.2 */
+#define TLS_RSA_WITH_AES_256_CBC_SHA256          0x3D   /**< TLS 1.2 */
+#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA256      0x67   /**< TLS 1.2 */
+#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA256      0x6B   /**< TLS 1.2 */
 
-#define SSL_RSA_CAMELLIA_128_SHA        0x41
-#define SSL_EDH_RSA_CAMELLIA_128_SHA    0x45
-#define SSL_RSA_CAMELLIA_256_SHA        0x84
-#define SSL_EDH_RSA_CAMELLIA_256_SHA    0x88
-#define SSL_RSA_CAMELLIA_128_SHA256     0xBA   /**< TLS 1.2 */
-#define SSL_EDH_RSA_CAMELLIA_128_SHA256 0xBE   /**< TLS 1.2 */
-#define SSL_RSA_CAMELLIA_256_SHA256     0xC0   /**< TLS 1.2 */
-#define SSL_EDH_RSA_CAMELLIA_256_SHA256 0xC4   /**< TLS 1.2 */
+#define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA        0x41
+#define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA    0x45
+#define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA        0x84
+#define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA    0x88
+#define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256     0xBA   /**< TLS 1.2 */
+#define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBE   /**< TLS 1.2 */
+#define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256     0xC0   /**< TLS 1.2 */
+#define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC4   /**< TLS 1.2 */
 
-#define SSL_RSA_AES_128_GCM_SHA256      0x9C
-#define SSL_RSA_AES_256_GCM_SHA384      0x9D
-#define SSL_EDH_RSA_AES_128_GCM_SHA256  0x9E
-#define SSL_EDH_RSA_AES_256_GCM_SHA384  0x9F
+#define TLS_RSA_WITH_AES_128_GCM_SHA256          0x9C
+#define TLS_RSA_WITH_AES_256_GCM_SHA384          0x9D
+#define TLS_DHE_RSA_WITH_AES_128_GCM_SHA256      0x9E
+#define TLS_DHE_RSA_WITH_AES_256_GCM_SHA384      0x9F
 
 #define SSL_EMPTY_RENEGOTIATION_INFO    0xFF   /**< renegotiation info ext */ 
 
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index 27fc0dc..11a7a61 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -636,18 +636,18 @@
 
     SSL_DEBUG_MSG( 2, ( "=> parse server key exchange" ) );
 
-    if( ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_DES_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_DES_168_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_128_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_256_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_128_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_256_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_CAMELLIA_128_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_CAMELLIA_256_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_CAMELLIA_128_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_CAMELLIA_256_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_128_GCM_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_256_GCM_SHA384 )
+    if( ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_DES_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_128_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_256_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
     {
         SSL_DEBUG_MSG( 2, ( "<= skip parse server key exchange" ) );
         ssl->state++;
@@ -973,18 +973,18 @@
 
     SSL_DEBUG_MSG( 2, ( "=> write client key exchange" ) );
 
-    if( ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_DES_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_DES_168_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_128_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_256_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_128_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_256_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_CAMELLIA_128_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_CAMELLIA_256_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_CAMELLIA_128_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_CAMELLIA_256_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_128_GCM_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_256_GCM_SHA384 )
+    if( ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_DES_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_128_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_256_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
     {
 #if !defined(POLARSSL_DHM_C)
         SSL_DEBUG_MSG( 1, ( "support for dhm in not available" ) );
@@ -1108,8 +1108,8 @@
         // Certificate Request according to RFC 5246. But OpenSSL only allows
         // SHA256 and SHA384. Find out why OpenSSL does this.
         //
-        if( ssl->session_negotiate->ciphersuite == SSL_RSA_AES_256_GCM_SHA384 ||
-            ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_256_GCM_SHA384 )
+        if( ssl->session_negotiate->ciphersuite == TLS_RSA_WITH_AES_256_GCM_SHA384 ||
+            ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
         {
             hash_id = SIG_RSA_SHA384;
             hashlen = 48;
@@ -1141,8 +1141,8 @@
         // Certificate Request according to RFC 5246. But OpenSSL only allows
         // SHA256 and SHA384. Find out why OpenSSL does this.
         //
-        if( ssl->session_negotiate->ciphersuite == SSL_RSA_AES_256_GCM_SHA384 ||
-            ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_256_GCM_SHA384 )
+        if( ssl->session_negotiate->ciphersuite == TLS_RSA_WITH_AES_256_GCM_SHA384 ||
+            ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
         {
             ssl->out_msg[4] = SSL_HASH_SHA384;
             ssl->out_msg[5] = SSL_SIG_RSA;
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index 584f868..0e27677 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -764,18 +764,18 @@
 
     SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) );
 
-    if( ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_DES_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_DES_168_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_128_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_256_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_128_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_256_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_CAMELLIA_128_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_CAMELLIA_256_SHA &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_CAMELLIA_128_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_CAMELLIA_256_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_128_GCM_SHA256 &&
-        ssl->session_negotiate->ciphersuite != SSL_EDH_RSA_AES_256_GCM_SHA384 )
+    if( ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_DES_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_128_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_256_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 &&
+        ssl->session_negotiate->ciphersuite != TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
     {
         SSL_DEBUG_MSG( 2, ( "<= skip write server key exchange" ) );
         ssl->state++;
@@ -1041,18 +1041,18 @@
         return( POLARSSL_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE );
     }
 
-    if( ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_DES_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_DES_168_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_128_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_256_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_128_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_256_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_CAMELLIA_128_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_CAMELLIA_256_SHA ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_CAMELLIA_128_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_CAMELLIA_256_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_128_GCM_SHA256 ||
-        ssl->session_negotiate->ciphersuite == SSL_EDH_RSA_AES_256_GCM_SHA384 )
+    if( ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_DES_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_128_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_256_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 ||
+        ssl->session_negotiate->ciphersuite == TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
     {
 #if !defined(POLARSSL_DHM_C)
         SSL_DEBUG_MSG( 1, ( "support for dhm is not available" ) );
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index b63c7d4..04ee6ff 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -315,8 +315,8 @@
         handshake->calc_verify = ssl_calc_verify_tls;
         handshake->calc_finished = ssl_calc_finished_tls;
     }
-    else if( session->ciphersuite == SSL_RSA_AES_256_GCM_SHA384 ||
-             session->ciphersuite == SSL_EDH_RSA_AES_256_GCM_SHA384 )
+    else if( session->ciphersuite == TLS_RSA_WITH_AES_256_GCM_SHA384 ||
+             session->ciphersuite == TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
     {
         handshake->tls_prf = tls_prf_sha384;
         handshake->calc_verify = ssl_calc_verify_tls_sha384;
@@ -390,61 +390,61 @@
     switch( session->ciphersuite )
     {
 #if defined(POLARSSL_ARC4_C)
-        case SSL_RSA_RC4_128_MD5:
+        case TLS_RSA_WITH_RC4_128_MD5:
             transform->keylen = 16; transform->minlen = 16;
             transform->ivlen  =  0; transform->maclen = 16;
             break;
 
-        case SSL_RSA_RC4_128_SHA:
+        case TLS_RSA_WITH_RC4_128_SHA:
             transform->keylen = 16; transform->minlen = 20;
             transform->ivlen  =  0; transform->maclen = 20;
             break;
 #endif
 
 #if defined(POLARSSL_DES_C)
-        case SSL_RSA_DES_168_SHA:
-        case SSL_EDH_RSA_DES_168_SHA:
+        case TLS_RSA_WITH_3DES_EDE_CBC_SHA:
+        case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
             transform->keylen = 24; transform->minlen = 24;
             transform->ivlen  =  8; transform->maclen = 20;
             break;
 #endif
 
 #if defined(POLARSSL_AES_C)
-        case SSL_RSA_AES_128_SHA:
-        case SSL_EDH_RSA_AES_128_SHA:
+        case TLS_RSA_WITH_AES_128_CBC_SHA:
+        case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
             transform->keylen = 16; transform->minlen = 32;
             transform->ivlen  = 16; transform->maclen = 20;
             break;
 
-        case SSL_RSA_AES_256_SHA:
-        case SSL_EDH_RSA_AES_256_SHA:
+        case TLS_RSA_WITH_AES_256_CBC_SHA:
+        case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
             transform->keylen = 32; transform->minlen = 32;
             transform->ivlen  = 16; transform->maclen = 20;
             break;
 
 #if defined(POLARSSL_SHA2_C)
-        case SSL_RSA_AES_128_SHA256:
-        case SSL_EDH_RSA_AES_128_SHA256:
+        case TLS_RSA_WITH_AES_128_CBC_SHA256:
+        case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:
             transform->keylen = 16; transform->minlen = 32;
             transform->ivlen  = 16; transform->maclen = 32;
             break;
 
-        case SSL_RSA_AES_256_SHA256:
-        case SSL_EDH_RSA_AES_256_SHA256:
+        case TLS_RSA_WITH_AES_256_CBC_SHA256:
+        case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:
             transform->keylen = 32; transform->minlen = 32;
             transform->ivlen  = 16; transform->maclen = 32;
             break;
 #endif
 #if defined(POLARSSL_GCM_C)
-        case SSL_RSA_AES_128_GCM_SHA256:
-        case SSL_EDH_RSA_AES_128_GCM_SHA256:
+        case TLS_RSA_WITH_AES_128_GCM_SHA256:
+        case TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:
             transform->keylen = 16; transform->minlen = 1;
             transform->ivlen  = 12; transform->maclen = 0;
             transform->fixed_ivlen = 4;
             break;
 
-        case SSL_RSA_AES_256_GCM_SHA384:
-        case SSL_EDH_RSA_AES_256_GCM_SHA384:
+        case TLS_RSA_WITH_AES_256_GCM_SHA384:
+        case TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:
             transform->keylen = 32; transform->minlen = 1;
             transform->ivlen  = 12; transform->maclen = 0;
             transform->fixed_ivlen = 4;
@@ -453,27 +453,27 @@
 #endif
 
 #if defined(POLARSSL_CAMELLIA_C)
-        case SSL_RSA_CAMELLIA_128_SHA:
-        case SSL_EDH_RSA_CAMELLIA_128_SHA:
+        case TLS_RSA_WITH_CAMELLIA_128_CBC_SHA:
+        case TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA:
             transform->keylen = 16; transform->minlen = 32;
             transform->ivlen  = 16; transform->maclen = 20;
             break;
 
-        case SSL_RSA_CAMELLIA_256_SHA:
-        case SSL_EDH_RSA_CAMELLIA_256_SHA:
+        case TLS_RSA_WITH_CAMELLIA_256_CBC_SHA:
+        case TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA:
             transform->keylen = 32; transform->minlen = 32;
             transform->ivlen  = 16; transform->maclen = 20;
             break;
 
 #if defined(POLARSSL_SHA2_C)
-        case SSL_RSA_CAMELLIA_128_SHA256:
-        case SSL_EDH_RSA_CAMELLIA_128_SHA256:
+        case TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256:
+        case TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256:
             transform->keylen = 16; transform->minlen = 32;
             transform->ivlen  = 16; transform->maclen = 32;
             break;
 
-        case SSL_RSA_CAMELLIA_256_SHA256:
-        case SSL_EDH_RSA_CAMELLIA_256_SHA256:
+        case TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256:
+        case TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256:
             transform->keylen = 32; transform->minlen = 32;
             transform->ivlen  = 16; transform->maclen = 32;
             break;
@@ -482,25 +482,25 @@
 
 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
-        case SSL_RSA_NULL_MD5:
+        case TLS_RSA_WITH_NULL_MD5:
             transform->keylen = 0; transform->minlen = 0;
             transform->ivlen  = 0; transform->maclen = 16;
             break;
 
-        case SSL_RSA_NULL_SHA:
+        case TLS_RSA_WITH_NULL_SHA:
             transform->keylen = 0; transform->minlen = 0;
             transform->ivlen  = 0; transform->maclen = 20;
             break;
 
-        case SSL_RSA_NULL_SHA256:
+        case TLS_RSA_WITH_NULL_SHA256:
             transform->keylen = 0; transform->minlen = 0;
             transform->ivlen  = 0; transform->maclen = 32;
             break;
 #endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
 
 #if defined(POLARSSL_DES_C)
-        case SSL_RSA_DES_SHA:
-        case SSL_EDH_RSA_DES_SHA:
+        case TLS_RSA_WITH_DES_CBC_SHA:
+        case TLS_DHE_RSA_WITH_DES_CBC_SHA:
             transform->keylen =  8; transform->minlen = 8;
             transform->ivlen  =  8; transform->maclen = 20;
             break;
@@ -577,8 +577,8 @@
     switch( session->ciphersuite )
     {
 #if defined(POLARSSL_ARC4_C)
-        case SSL_RSA_RC4_128_MD5:
-        case SSL_RSA_RC4_128_SHA:
+        case TLS_RSA_WITH_RC4_128_MD5:
+        case TLS_RSA_WITH_RC4_128_SHA:
             arc4_setup( (arc4_context *) transform->ctx_enc, key1,
                         transform->keylen );
             arc4_setup( (arc4_context *) transform->ctx_dec, key2,
@@ -587,39 +587,39 @@
 #endif
 
 #if defined(POLARSSL_DES_C)
-        case SSL_RSA_DES_168_SHA:
-        case SSL_EDH_RSA_DES_168_SHA:
+        case TLS_RSA_WITH_3DES_EDE_CBC_SHA:
+        case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
             des3_set3key_enc( (des3_context *) transform->ctx_enc, key1 );
             des3_set3key_dec( (des3_context *) transform->ctx_dec, key2 );
             break;
 #endif
 
 #if defined(POLARSSL_AES_C)
-        case SSL_RSA_AES_128_SHA:
-        case SSL_EDH_RSA_AES_128_SHA:
-        case SSL_RSA_AES_128_SHA256:
-        case SSL_EDH_RSA_AES_128_SHA256:
+        case TLS_RSA_WITH_AES_128_CBC_SHA:
+        case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
+        case TLS_RSA_WITH_AES_128_CBC_SHA256:
+        case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:
             aes_setkey_enc( (aes_context *) transform->ctx_enc, key1, 128 );
             aes_setkey_dec( (aes_context *) transform->ctx_dec, key2, 128 );
             break;
 
-        case SSL_RSA_AES_256_SHA:
-        case SSL_EDH_RSA_AES_256_SHA:
-        case SSL_RSA_AES_256_SHA256:
-        case SSL_EDH_RSA_AES_256_SHA256:
+        case TLS_RSA_WITH_AES_256_CBC_SHA:
+        case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
+        case TLS_RSA_WITH_AES_256_CBC_SHA256:
+        case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:
             aes_setkey_enc( (aes_context *) transform->ctx_enc, key1, 256 );
             aes_setkey_dec( (aes_context *) transform->ctx_dec, key2, 256 );
             break;
 
 #if defined(POLARSSL_GCM_C)
-        case SSL_RSA_AES_128_GCM_SHA256:
-        case SSL_EDH_RSA_AES_128_GCM_SHA256:
+        case TLS_RSA_WITH_AES_128_GCM_SHA256:
+        case TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:
             gcm_init( (gcm_context *) transform->ctx_enc, key1, 128 );
             gcm_init( (gcm_context *) transform->ctx_dec, key2, 128 );
             break;
 
-        case SSL_RSA_AES_256_GCM_SHA384:
-        case SSL_EDH_RSA_AES_256_GCM_SHA384:
+        case TLS_RSA_WITH_AES_256_GCM_SHA384:
+        case TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:
             gcm_init( (gcm_context *) transform->ctx_enc, key1, 256 );
             gcm_init( (gcm_context *) transform->ctx_dec, key2, 256 );
             break;
@@ -627,18 +627,18 @@
 #endif
 
 #if defined(POLARSSL_CAMELLIA_C)
-        case SSL_RSA_CAMELLIA_128_SHA:
-        case SSL_EDH_RSA_CAMELLIA_128_SHA:
-        case SSL_RSA_CAMELLIA_128_SHA256:
-        case SSL_EDH_RSA_CAMELLIA_128_SHA256:
+        case TLS_RSA_WITH_CAMELLIA_128_CBC_SHA:
+        case TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA:
+        case TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256:
+        case TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256:
             camellia_setkey_enc( (camellia_context *) transform->ctx_enc, key1, 128 );
             camellia_setkey_dec( (camellia_context *) transform->ctx_dec, key2, 128 );
             break;
 
-        case SSL_RSA_CAMELLIA_256_SHA:
-        case SSL_EDH_RSA_CAMELLIA_256_SHA:
-        case SSL_RSA_CAMELLIA_256_SHA256:
-        case SSL_EDH_RSA_CAMELLIA_256_SHA256:
+        case TLS_RSA_WITH_CAMELLIA_256_CBC_SHA:
+        case TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA:
+        case TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256:
+        case TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256:
             camellia_setkey_enc( (camellia_context *) transform->ctx_enc, key1, 256 );
             camellia_setkey_dec( (camellia_context *) transform->ctx_dec, key2, 256 );
             break;
@@ -646,15 +646,15 @@
 
 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
-        case SSL_RSA_NULL_MD5:
-        case SSL_RSA_NULL_SHA:
-        case SSL_RSA_NULL_SHA256:
+        case TLS_RSA_WITH_NULL_MD5:
+        case TLS_RSA_WITH_NULL_SHA:
+        case TLS_RSA_WITH_NULL_SHA256:
             break;
 #endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
 
 #if defined(POLARSSL_DES_C)
-        case SSL_RSA_DES_SHA:
-        case SSL_EDH_RSA_DES_SHA:
+        case TLS_RSA_WITH_DES_CBC_SHA:
+        case TLS_DHE_RSA_WITH_DES_CBC_SHA:
             des_setkey_enc( (des_context *) transform->ctx_enc, key1 );
             des_setkey_dec( (des_context *) transform->ctx_dec, key2 );
             break;
@@ -958,8 +958,8 @@
                        ssl->out_msg, ssl->out_msglen );
 
 #if defined(POLARSSL_ARC4_C)
-        if( ssl->session_out->ciphersuite == SSL_RSA_RC4_128_MD5 ||
-            ssl->session_out->ciphersuite == SSL_RSA_RC4_128_SHA )
+        if( ssl->session_out->ciphersuite == TLS_RSA_WITH_RC4_128_MD5 ||
+            ssl->session_out->ciphersuite == TLS_RSA_WITH_RC4_128_SHA )
         {
             arc4_crypt( (arc4_context *) ssl->transform_out->ctx_enc,
                         ssl->out_msglen, ssl->out_msg,
@@ -967,9 +967,9 @@
         } else
 #endif
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
-        if( ssl->session_out->ciphersuite == SSL_RSA_NULL_MD5 ||
-            ssl->session_out->ciphersuite == SSL_RSA_NULL_SHA ||
-            ssl->session_out->ciphersuite == SSL_RSA_NULL_SHA256 )
+        if( ssl->session_out->ciphersuite == TLS_RSA_WITH_NULL_MD5 ||
+            ssl->session_out->ciphersuite == TLS_RSA_WITH_NULL_SHA ||
+            ssl->session_out->ciphersuite == TLS_RSA_WITH_NULL_SHA256 )
         {
         } else
 #endif
@@ -997,10 +997,10 @@
 
 #if defined(POLARSSL_AES_C) && defined(POLARSSL_GCM_C)
 
-        if( ssl->session_out->ciphersuite == SSL_RSA_AES_128_GCM_SHA256 ||
-            ssl->session_out->ciphersuite == SSL_EDH_RSA_AES_128_GCM_SHA256 ||
-            ssl->session_out->ciphersuite == SSL_RSA_AES_256_GCM_SHA384 ||
-            ssl->session_out->ciphersuite == SSL_EDH_RSA_AES_256_GCM_SHA384 )
+        if( ssl->session_out->ciphersuite == TLS_RSA_WITH_AES_128_GCM_SHA256 ||
+            ssl->session_out->ciphersuite == TLS_RSA_WITH_AES_256_GCM_SHA384 ||
+            ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 ||
+            ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
         {
             /*
              * Generate IV
@@ -1116,8 +1116,8 @@
 #if defined(POLARSSL_DES_C)
             case  8:
 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
-                if( ssl->session_out->ciphersuite == SSL_RSA_DES_SHA ||
-                    ssl->session_out->ciphersuite == SSL_EDH_RSA_DES_SHA )
+                if( ssl->session_out->ciphersuite == TLS_RSA_WITH_DES_CBC_SHA ||
+                    ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_DES_CBC_SHA )
                 {
                     des_crypt_cbc( (des_context *) ssl->transform_out->ctx_enc,
                                    DES_ENCRYPT, enc_msglen,
@@ -1133,14 +1133,14 @@
 
             case 16:
 #if defined(POLARSSL_AES_C)
-        if ( ssl->session_out->ciphersuite == SSL_RSA_AES_128_SHA ||
-             ssl->session_out->ciphersuite == SSL_EDH_RSA_AES_128_SHA ||
-             ssl->session_out->ciphersuite == SSL_RSA_AES_256_SHA ||
-             ssl->session_out->ciphersuite == SSL_EDH_RSA_AES_256_SHA ||
-             ssl->session_out->ciphersuite == SSL_RSA_AES_128_SHA256 ||
-             ssl->session_out->ciphersuite == SSL_EDH_RSA_AES_128_SHA256 ||
-             ssl->session_out->ciphersuite == SSL_RSA_AES_256_SHA256 ||
-             ssl->session_out->ciphersuite == SSL_EDH_RSA_AES_256_SHA256 )
+        if ( ssl->session_out->ciphersuite == TLS_RSA_WITH_AES_128_CBC_SHA ||
+             ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_AES_128_CBC_SHA ||
+             ssl->session_out->ciphersuite == TLS_RSA_WITH_AES_256_CBC_SHA ||
+             ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_AES_256_CBC_SHA ||
+             ssl->session_out->ciphersuite == TLS_RSA_WITH_AES_128_CBC_SHA256 ||
+             ssl->session_out->ciphersuite == TLS_RSA_WITH_AES_256_CBC_SHA256 ||
+             ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 ||
+             ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 )
         {
                     aes_crypt_cbc( (aes_context *) ssl->transform_out->ctx_enc,
                         AES_ENCRYPT, enc_msglen,
@@ -1150,14 +1150,14 @@
 #endif
 
 #if defined(POLARSSL_CAMELLIA_C)
-        if ( ssl->session_out->ciphersuite == SSL_RSA_CAMELLIA_128_SHA ||
-             ssl->session_out->ciphersuite == SSL_EDH_RSA_CAMELLIA_128_SHA ||
-             ssl->session_out->ciphersuite == SSL_RSA_CAMELLIA_256_SHA ||
-             ssl->session_out->ciphersuite == SSL_EDH_RSA_CAMELLIA_256_SHA ||
-             ssl->session_out->ciphersuite == SSL_RSA_CAMELLIA_128_SHA256 ||
-             ssl->session_out->ciphersuite == SSL_EDH_RSA_CAMELLIA_128_SHA256 ||
-             ssl->session_out->ciphersuite == SSL_RSA_CAMELLIA_256_SHA256 ||
-             ssl->session_out->ciphersuite == SSL_EDH_RSA_CAMELLIA_256_SHA256 )
+        if ( ssl->session_out->ciphersuite == TLS_RSA_WITH_CAMELLIA_128_CBC_SHA ||
+             ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA ||
+             ssl->session_out->ciphersuite == TLS_RSA_WITH_CAMELLIA_256_CBC_SHA ||
+             ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA ||
+             ssl->session_out->ciphersuite == TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 ||
+             ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 ||
+             ssl->session_out->ciphersuite == TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 ||
+             ssl->session_out->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 )
         {
                     camellia_crypt_cbc( (camellia_context *) ssl->transform_out->ctx_enc,
                         CAMELLIA_ENCRYPT, enc_msglen,
@@ -1203,8 +1203,8 @@
     {
 #if defined(POLARSSL_ARC4_C)
         padlen = 0;
-        if( ssl->session_in->ciphersuite == SSL_RSA_RC4_128_MD5 ||
-            ssl->session_in->ciphersuite == SSL_RSA_RC4_128_SHA )
+        if( ssl->session_in->ciphersuite == TLS_RSA_WITH_RC4_128_MD5 ||
+            ssl->session_in->ciphersuite == TLS_RSA_WITH_RC4_128_SHA )
         {
             arc4_crypt( (arc4_context *) ssl->transform_in->ctx_dec,
                     ssl->in_msglen, ssl->in_msg,
@@ -1212,9 +1212,9 @@
         } else
 #endif
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
-        if( ssl->session_in->ciphersuite == SSL_RSA_NULL_MD5 ||
-            ssl->session_in->ciphersuite == SSL_RSA_NULL_SHA ||
-            ssl->session_in->ciphersuite == SSL_RSA_NULL_SHA256 )
+        if( ssl->session_in->ciphersuite == TLS_RSA_WITH_NULL_MD5 ||
+            ssl->session_in->ciphersuite == TLS_RSA_WITH_NULL_SHA ||
+            ssl->session_in->ciphersuite == TLS_RSA_WITH_NULL_SHA256 )
         {
         } else
 #endif
@@ -1231,10 +1231,10 @@
         padlen = 0;
 
 #if defined(POLARSSL_AES_C) && defined(POLARSSL_GCM_C)
-        if( ssl->session_in->ciphersuite == SSL_RSA_AES_128_GCM_SHA256 ||
-            ssl->session_in->ciphersuite == SSL_EDH_RSA_AES_128_GCM_SHA256 ||
-            ssl->session_in->ciphersuite == SSL_RSA_AES_256_GCM_SHA384 ||
-            ssl->session_in->ciphersuite == SSL_EDH_RSA_AES_256_GCM_SHA384 )
+        if( ssl->session_in->ciphersuite == TLS_RSA_WITH_AES_128_GCM_SHA256 ||
+            ssl->session_in->ciphersuite == TLS_RSA_WITH_AES_256_GCM_SHA384 ||
+            ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 ||
+            ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
         {
             dec_msglen = ssl->in_msglen - ( ssl->transform_in->ivlen -
                                             ssl->transform_in->fixed_ivlen );
@@ -1323,8 +1323,8 @@
 #if defined(POLARSSL_DES_C)
             case  8:
 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
-                if( ssl->session_in->ciphersuite == SSL_RSA_DES_SHA ||
-                    ssl->session_in->ciphersuite == SSL_EDH_RSA_DES_SHA )
+                if( ssl->session_in->ciphersuite == TLS_RSA_WITH_DES_CBC_SHA ||
+                    ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_DES_CBC_SHA )
                 {
                     des_crypt_cbc( (des_context *) ssl->transform_in->ctx_dec,
                                    DES_DECRYPT, dec_msglen,
@@ -1340,14 +1340,14 @@
 
             case 16:
 #if defined(POLARSSL_AES_C)
-        if ( ssl->session_in->ciphersuite == SSL_RSA_AES_128_SHA ||
-             ssl->session_in->ciphersuite == SSL_EDH_RSA_AES_128_SHA ||
-             ssl->session_in->ciphersuite == SSL_RSA_AES_256_SHA ||
-             ssl->session_in->ciphersuite == SSL_EDH_RSA_AES_256_SHA ||
-             ssl->session_in->ciphersuite == SSL_RSA_AES_128_SHA256 ||
-             ssl->session_in->ciphersuite == SSL_EDH_RSA_AES_128_SHA256 ||
-             ssl->session_in->ciphersuite == SSL_RSA_AES_256_SHA256 ||
-             ssl->session_in->ciphersuite == SSL_EDH_RSA_AES_256_SHA256 )
+        if ( ssl->session_in->ciphersuite == TLS_RSA_WITH_AES_128_CBC_SHA ||
+             ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_AES_128_CBC_SHA ||
+             ssl->session_in->ciphersuite == TLS_RSA_WITH_AES_256_CBC_SHA ||
+             ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_AES_256_CBC_SHA ||
+             ssl->session_in->ciphersuite == TLS_RSA_WITH_AES_128_CBC_SHA256 ||
+             ssl->session_in->ciphersuite == TLS_RSA_WITH_AES_256_CBC_SHA256 ||
+             ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 ||
+             ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 )
         {
                     aes_crypt_cbc( (aes_context *) ssl->transform_in->ctx_dec,
                        AES_DECRYPT, dec_msglen,
@@ -1357,14 +1357,14 @@
 #endif
 
 #if defined(POLARSSL_CAMELLIA_C)
-        if ( ssl->session_in->ciphersuite == SSL_RSA_CAMELLIA_128_SHA ||
-             ssl->session_in->ciphersuite == SSL_EDH_RSA_CAMELLIA_128_SHA ||
-             ssl->session_in->ciphersuite == SSL_RSA_CAMELLIA_256_SHA ||
-             ssl->session_in->ciphersuite == SSL_EDH_RSA_CAMELLIA_256_SHA ||
-             ssl->session_in->ciphersuite == SSL_RSA_CAMELLIA_128_SHA256 ||
-             ssl->session_in->ciphersuite == SSL_EDH_RSA_CAMELLIA_128_SHA256 ||
-             ssl->session_in->ciphersuite == SSL_RSA_CAMELLIA_256_SHA256 ||
-             ssl->session_in->ciphersuite == SSL_EDH_RSA_CAMELLIA_256_SHA256 )
+        if ( ssl->session_in->ciphersuite == TLS_RSA_WITH_CAMELLIA_128_CBC_SHA ||
+             ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA ||
+             ssl->session_in->ciphersuite == TLS_RSA_WITH_CAMELLIA_256_CBC_SHA ||
+             ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA ||
+             ssl->session_in->ciphersuite == TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 ||
+             ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 ||
+             ssl->session_in->ciphersuite == TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 ||
+             ssl->session_in->ciphersuite == TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 )
         {
                     camellia_crypt_cbc( (camellia_context *) ssl->transform_in->ctx_dec,
                        CAMELLIA_DECRYPT, dec_msglen,
@@ -2392,8 +2392,8 @@
 {
     if( ssl->minor_ver < SSL_MINOR_VERSION_3 )
         ssl->handshake->update_checksum = ssl_update_checksum_md5sha1;
-    else if ( ciphersuite == SSL_RSA_AES_256_GCM_SHA384 ||
-              ciphersuite == SSL_EDH_RSA_AES_256_GCM_SHA384 )
+    else if ( ciphersuite == TLS_RSA_WITH_AES_256_GCM_SHA384 ||
+              ciphersuite == TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 )
     {
         ssl->handshake->update_checksum = ssl_update_checksum_sha384;
     }
@@ -2859,6 +2859,8 @@
     ssl->min_major_ver = SSL_MAJOR_VERSION_3;
     ssl->min_minor_ver = SSL_MINOR_VERSION_0;
 
+    ssl->ciphersuites = ssl_default_ciphersuites;
+
 #if defined(POLARSSL_DHM_C)
     if( ( ret = mpi_read_string( &ssl->dhm_P, 16,
                                  POLARSSL_DHM_RFC5114_MODP_1024_P) ) != 0 ||
@@ -3171,108 +3173,108 @@
     switch( ciphersuite_id )
     {
 #if defined(POLARSSL_ARC4_C)
-        case SSL_RSA_RC4_128_MD5:
-            return( "SSL-RSA-RC4-128-MD5" );
+        case TLS_RSA_WITH_RC4_128_MD5:
+            return( "TLS-RSA-WITH-RC4-128-MD5" );
 
-        case SSL_RSA_RC4_128_SHA:
-            return( "SSL-RSA-RC4-128-SHA" );
+        case TLS_RSA_WITH_RC4_128_SHA:
+            return( "TLS-RSA-WITH-RC4-128-SHA" );
 #endif
 
 #if defined(POLARSSL_DES_C)
-        case SSL_RSA_DES_168_SHA:
-            return( "SSL-RSA-DES-168-SHA" );
+        case TLS_RSA_WITH_3DES_EDE_CBC_SHA:
+            return( "TLS-RSA-WITH-3DES-EDE-CBC-SHA" );
 
-        case SSL_EDH_RSA_DES_168_SHA:
-            return( "SSL-EDH-RSA-DES-168-SHA" );
+        case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
+            return( "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA" );
 #endif
 
 #if defined(POLARSSL_AES_C)
-        case SSL_RSA_AES_128_SHA:
-            return( "SSL-RSA-AES-128-SHA" );
+        case TLS_RSA_WITH_AES_128_CBC_SHA:
+            return( "TLS-RSA-WITH-AES-128-CBC-SHA" );
 
-        case SSL_EDH_RSA_AES_128_SHA:
-            return( "SSL-EDH-RSA-AES-128-SHA" );
+        case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
+            return( "TLS-DHE-RSA-WITH-AES-128-CBC-SHA" );
 
-        case SSL_RSA_AES_256_SHA:
-            return( "SSL-RSA-AES-256-SHA" );
+        case TLS_RSA_WITH_AES_256_CBC_SHA:
+            return( "TLS-RSA-WITH-AES-256-CBC-SHA" );
 
-        case SSL_EDH_RSA_AES_256_SHA:
-            return( "SSL-EDH-RSA-AES-256-SHA" );
+        case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
+            return( "TLS-DHE-RSA-WITH-AES-256-CBC-SHA" );
 
 #if defined(POLARSSL_SHA2_C)
-        case SSL_RSA_AES_128_SHA256:
-            return( "SSL-RSA-AES-128-SHA256" );
+        case TLS_RSA_WITH_AES_128_CBC_SHA256:
+            return( "TLS-RSA-WITH-AES-128-CBC-SHA256" );
 
-        case SSL_EDH_RSA_AES_128_SHA256:
-            return( "SSL-EDH-RSA-AES-128-SHA256" );
+        case TLS_RSA_WITH_AES_256_CBC_SHA256:
+            return( "TLS-RSA-WITH-AES-256-CBC-SHA256" );
 
-        case SSL_RSA_AES_256_SHA256:
-            return( "SSL-RSA-AES-256-SHA256" );
+        case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:
+            return( "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256" );
 
-        case SSL_EDH_RSA_AES_256_SHA256:
-            return( "SSL-EDH-RSA-AES-256-SHA256" );
+        case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:
+            return( "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256" );
 #endif
 
 #if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
-        case SSL_RSA_AES_128_GCM_SHA256:
-            return( "SSL-RSA-AES-128-GCM-SHA256" );
+        case TLS_RSA_WITH_AES_128_GCM_SHA256:
+            return( "TLS-RSA-WITH-AES-128-GCM-SHA256" );
 
-        case SSL_EDH_RSA_AES_128_GCM_SHA256:
-            return( "SSL-EDH-RSA-AES-128-GCM-SHA256" );
+        case TLS_RSA_WITH_AES_256_GCM_SHA384:
+            return( "TLS-RSA-WITH-AES-256-GCM-SHA384" );
 #endif
 
 #if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA4_C)
-        case SSL_RSA_AES_256_GCM_SHA384:
-            return( "SSL-RSA-AES-256-GCM-SHA384" );
+        case TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:
+            return( "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256" );
 
-        case SSL_EDH_RSA_AES_256_GCM_SHA384:
-            return( "SSL-EDH-RSA-AES-256-GCM-SHA384" );
+        case TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:
+            return( "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384" );
 #endif
 #endif /* POLARSSL_AES_C */
 
 #if defined(POLARSSL_CAMELLIA_C)
-        case SSL_RSA_CAMELLIA_128_SHA:
-            return( "SSL-RSA-CAMELLIA-128-SHA" );
+        case TLS_RSA_WITH_CAMELLIA_128_CBC_SHA:
+            return( "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA" );
 
-        case SSL_EDH_RSA_CAMELLIA_128_SHA:
-            return( "SSL-EDH-RSA-CAMELLIA-128-SHA" );
+        case TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA:
+            return( "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA" );
 
-        case SSL_RSA_CAMELLIA_256_SHA:
-            return( "SSL-RSA-CAMELLIA-256-SHA" );
+        case TLS_RSA_WITH_CAMELLIA_256_CBC_SHA:
+            return( "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA" );
 
-        case SSL_EDH_RSA_CAMELLIA_256_SHA:
-            return( "SSL-EDH-RSA-CAMELLIA-256-SHA" );
+        case TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA:
+            return( "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA" );
 
 #if defined(POLARSSL_SHA2_C)
-        case SSL_RSA_CAMELLIA_128_SHA256:
-            return( "SSL-RSA-CAMELLIA-128-SHA256" );
+        case TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256:
+            return( "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256" );
 
-        case SSL_EDH_RSA_CAMELLIA_128_SHA256:
-            return( "SSL-EDH-RSA-CAMELLIA-128-SHA256" );
+        case TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256:
+            return( "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256" );
 
-        case SSL_RSA_CAMELLIA_256_SHA256:
-            return( "SSL-RSA-CAMELLIA-256-SHA256" );
+        case TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256:
+            return( "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256" );
 
-        case SSL_EDH_RSA_CAMELLIA_256_SHA256:
-            return( "SSL-EDH-RSA-CAMELLIA-256-SHA256" );
+        case TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256:
+            return( "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256" );
 #endif
 #endif
 
 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
-        case SSL_RSA_NULL_MD5:
-            return( "SSL-RSA-NULL-MD5" );
-        case SSL_RSA_NULL_SHA:
-            return( "SSL-RSA-NULL-SHA" );
-        case SSL_RSA_NULL_SHA256:
-            return( "SSL-RSA-NULL-SHA256" );
+        case TLS_RSA_WITH_NULL_MD5:
+            return( "TLS-RSA-WITH-NULL-MD5" );
+        case TLS_RSA_WITH_NULL_SHA:
+            return( "TLS-RSA-WITH-NULL-SHA" );
+        case TLS_RSA_WITH_NULL_SHA256:
+            return( "TLS-RSA-WITH-NULL-SHA256" );
 #endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
 
 #if defined(POLARSSL_DES_C)
-        case SSL_RSA_DES_SHA:
-            return( "SSL-RSA-DES-SHA" );
-        case SSL_EDH_RSA_DES_SHA:
-            return( "SSL-EDH-RSA-DES-SHA" );
+        case TLS_RSA_WITH_DES_CBC_SHA:
+            return( "TLS-RSA-WITH-DES-CBC-SHA" );
+        case TLS_DHE_RSA_WITH_DES_CBC_SHA:
+            return( "TLS-DHE-RSA-WITH-DES-CBC-SHA" );
 #endif
 #endif /* defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES) */
 
@@ -3286,92 +3288,92 @@
 int ssl_get_ciphersuite_id( const char *ciphersuite_name )
 {
 #if defined(POLARSSL_ARC4_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-RC4-128-MD5"))
-        return( SSL_RSA_RC4_128_MD5 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-RC4-128-SHA"))
-        return( SSL_RSA_RC4_128_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-RC4-128-MD5"))
+        return( TLS_RSA_WITH_RC4_128_MD5 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-RC4-128-SHA"))
+        return( TLS_RSA_WITH_RC4_128_SHA );
 #endif
 
 #if defined(POLARSSL_DES_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-DES-168-SHA"))
-        return( SSL_RSA_DES_168_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-DES-168-SHA"))
-        return( SSL_EDH_RSA_DES_168_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-3DES-EDE-CBC-SHA"))
+        return( TLS_RSA_WITH_3DES_EDE_CBC_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA"))
+        return( TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA );
 #endif
 
 #if defined(POLARSSL_AES_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-AES-128-SHA"))
-        return( SSL_RSA_AES_128_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-AES-128-SHA"))
-        return( SSL_EDH_RSA_AES_128_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-AES-256-SHA"))
-        return( SSL_RSA_AES_256_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-AES-256-SHA"))
-        return( SSL_EDH_RSA_AES_256_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-AES-128-CBC-SHA"))
+        return( TLS_RSA_WITH_AES_128_CBC_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA"))
+        return( TLS_DHE_RSA_WITH_AES_128_CBC_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-AES-256-CBC-SHA"))
+        return( TLS_RSA_WITH_AES_256_CBC_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA"))
+        return( TLS_DHE_RSA_WITH_AES_256_CBC_SHA );
 
 #if defined(POLARSSL_SHA2_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-AES-128-SHA256"))
-        return( SSL_RSA_AES_128_SHA256 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-AES-128-SHA256"))
-        return( SSL_EDH_RSA_AES_128_SHA256 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-AES-256-SHA256"))
-        return( SSL_RSA_AES_256_SHA256 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-AES-256-SHA256"))
-        return( SSL_EDH_RSA_AES_256_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-AES-128-CBC-SHA256"))
+        return( TLS_RSA_WITH_AES_128_CBC_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-AES-256-CBC-SHA256"))
+        return( TLS_RSA_WITH_AES_256_CBC_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256"))
+        return( TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256"))
+        return( TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 );
 #endif
 
 #if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-AES-128-GCM-SHA256"))
-        return( SSL_RSA_AES_128_GCM_SHA256 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-AES-128-GCM-SHA256"))
-        return( SSL_EDH_RSA_AES_128_GCM_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-AES-128-GCM-SHA256"))
+        return( TLS_RSA_WITH_AES_128_GCM_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-AES-256-GCM-SHA384"))
+        return( TLS_RSA_WITH_AES_256_GCM_SHA384 );
 #endif
 
 #if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-AES-256-GCM-SHA384"))
-        return( SSL_RSA_AES_256_GCM_SHA384 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-AES-256-GCM-SHA384"))
-        return( SSL_EDH_RSA_AES_256_GCM_SHA384 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256"))
+        return( TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384"))
+        return( TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 );
 #endif
 #endif
 
 #if defined(POLARSSL_CAMELLIA_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-CAMELLIA-128-SHA"))
-        return( SSL_RSA_CAMELLIA_128_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-CAMELLIA-128-SHA"))
-        return( SSL_EDH_RSA_CAMELLIA_128_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-CAMELLIA-256-SHA"))
-        return( SSL_RSA_CAMELLIA_256_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-CAMELLIA-256-SHA"))
-        return( SSL_EDH_RSA_CAMELLIA_256_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA"))
+        return( TLS_RSA_WITH_CAMELLIA_128_CBC_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA"))
+        return( TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA"))
+        return( TLS_RSA_WITH_CAMELLIA_256_CBC_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA"))
+        return( TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA );
 
 #if defined(POLARSSL_SHA2_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-CAMELLIA-128-SHA256"))
-        return( SSL_RSA_CAMELLIA_128_SHA256 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-CAMELLIA-128-SHA256"))
-        return( SSL_EDH_RSA_CAMELLIA_128_SHA256 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-CAMELLIA-256-SHA256"))
-        return( SSL_RSA_CAMELLIA_256_SHA256 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-CAMELLIA-256-SHA256"))
-        return( SSL_EDH_RSA_CAMELLIA_256_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256"))
+        return( TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256"))
+        return( TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256"))
+        return( TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256"))
+        return( TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 );
 #endif
 #endif
 
 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-NULL-MD5"))
-        return( SSL_RSA_NULL_MD5 );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-NULL-SHA"))
-        return( SSL_RSA_NULL_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-NULL-SHA256"))
-        return( SSL_RSA_NULL_SHA256 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-NULL-MD5"))
+        return( TLS_RSA_WITH_NULL_MD5 );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-NULL-SHA"))
+        return( TLS_RSA_WITH_NULL_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-NULL-SHA256"))
+        return( TLS_RSA_WITH_NULL_SHA256 );
 #endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
 
 #if defined(POLARSSL_DES_C)
-    if (0 == strcasecmp(ciphersuite_name, "SSL-RSA-DES-SHA"))
-        return( SSL_RSA_DES_SHA );
-    if (0 == strcasecmp(ciphersuite_name, "SSL-EDH-RSA-DES-SHA"))
-        return( SSL_EDH_RSA_DES_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-RSA-WITH-DES-CBC-SHA"))
+        return( TLS_RSA_WITH_DES_CBC_SHA );
+    if (0 == strcasecmp(ciphersuite_name, "TLS-DHE-RSA-WITH-DES-CBC-SHA"))
+        return( TLS_DHE_RSA_WITH_DES_CBC_SHA );
 #endif
 #endif /* defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES) */
 
@@ -3418,71 +3420,71 @@
 #if defined(POLARSSL_DHM_C)
 #if defined(POLARSSL_AES_C)
 #if defined(POLARSSL_SHA2_C)
-    SSL_EDH_RSA_AES_256_SHA256,
+    TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
 #endif /* POLARSSL_SHA2_C */
 #if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA4_C)
-    SSL_EDH_RSA_AES_256_GCM_SHA384,
+    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
 #endif
-    SSL_EDH_RSA_AES_256_SHA,
+    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
 #if defined(POLARSSL_SHA2_C)
-    SSL_EDH_RSA_AES_128_SHA256,
+    TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
 #endif
 #if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
-    SSL_EDH_RSA_AES_128_GCM_SHA256,
+    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
 #endif
-    SSL_EDH_RSA_AES_128_SHA,
+    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
 #endif
 #if defined(POLARSSL_CAMELLIA_C)
 #if defined(POLARSSL_SHA2_C)
-    SSL_EDH_RSA_CAMELLIA_256_SHA256,
+    TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
 #endif /* POLARSSL_SHA2_C */
-    SSL_EDH_RSA_CAMELLIA_256_SHA,
+    TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
 #if defined(POLARSSL_SHA2_C)
-    SSL_EDH_RSA_CAMELLIA_128_SHA256,
+    TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
 #endif /* POLARSSL_SHA2_C */
-    SSL_EDH_RSA_CAMELLIA_128_SHA,
+    TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
 #endif
 #if defined(POLARSSL_DES_C)
-    SSL_EDH_RSA_DES_168_SHA,
+    TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
 #endif
 #endif
 
 #if defined(POLARSSL_AES_C)
 #if defined(POLARSSL_SHA2_C)
-    SSL_RSA_AES_256_SHA256,
+    TLS_RSA_WITH_AES_256_CBC_SHA256,
 #endif /* POLARSSL_SHA2_C */
 #if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA4_C)
-    SSL_RSA_AES_256_GCM_SHA384,
+    TLS_RSA_WITH_AES_256_GCM_SHA384,
 #endif /* POLARSSL_SHA2_C */
-    SSL_RSA_AES_256_SHA,
+    TLS_RSA_WITH_AES_256_CBC_SHA,
 #endif
 #if defined(POLARSSL_CAMELLIA_C)
 #if defined(POLARSSL_SHA2_C)
-    SSL_RSA_CAMELLIA_256_SHA256,
+    TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
 #endif /* POLARSSL_SHA2_C */
-    SSL_RSA_CAMELLIA_256_SHA,
+    TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
 #endif
 #if defined(POLARSSL_AES_C)
 #if defined(POLARSSL_SHA2_C)
-    SSL_RSA_AES_128_SHA256,
+    TLS_RSA_WITH_AES_128_CBC_SHA256,
 #endif /* POLARSSL_SHA2_C */
 #if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
-    SSL_RSA_AES_128_GCM_SHA256,
+    TLS_RSA_WITH_AES_128_GCM_SHA256,
 #endif /* POLARSSL_SHA2_C */
-    SSL_RSA_AES_128_SHA,
+    TLS_RSA_WITH_AES_128_CBC_SHA,
 #endif
 #if defined(POLARSSL_CAMELLIA_C)
 #if defined(POLARSSL_SHA2_C)
-    SSL_RSA_CAMELLIA_128_SHA256,
+    TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
 #endif /* POLARSSL_SHA2_C */
-    SSL_RSA_CAMELLIA_128_SHA,
+    TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
 #endif
 #if defined(POLARSSL_DES_C)
-    SSL_RSA_DES_168_SHA,
+    TLS_RSA_WITH_3DES_EDE_CBC_SHA,
 #endif
 #if defined(POLARSSL_ARC4_C)
-    SSL_RSA_RC4_128_SHA,
-    SSL_RSA_RC4_128_MD5,
+    TLS_RSA_WITH_RC4_128_SHA,
+    TLS_RSA_WITH_RC4_128_MD5,
 #endif
     0
 };
diff --git a/programs/ssl/ssl_client1.c b/programs/ssl/ssl_client1.c
index 3cd05ab..7631a22 100644
--- a/programs/ssl/ssl_client1.c
+++ b/programs/ssl/ssl_client1.c
@@ -138,8 +138,6 @@
     ssl_set_bio( &ssl, net_recv, &server_fd,
                        net_send, &server_fd );
 
-    ssl_set_ciphersuites( &ssl, ssl_default_ciphersuites );
-
     /*
      * 3. Write the GET request
      */
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index 949ef58..6e047dc 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -475,9 +475,7 @@
     ssl_set_bio( &ssl, net_recv, &server_fd,
                        net_send, &server_fd );
 
-    if( opt.force_ciphersuite[0] == DFL_FORCE_CIPHER )
-        ssl_set_ciphersuites( &ssl, ssl_default_ciphersuites );
-    else
+    if( opt.force_ciphersuite[0] != DFL_FORCE_CIPHER )
         ssl_set_ciphersuites( &ssl, opt.force_ciphersuite );
 
     ssl_set_renegotiation( &ssl, opt.renegotiation );
diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c
index 0ef3cf9..0242770 100644
--- a/programs/ssl/ssl_fork_server.c
+++ b/programs/ssl/ssl_fork_server.c
@@ -78,42 +78,6 @@
     return( 0 );
 }
 #else
-/*
- * Computing a "safe" DH-1024 prime can take a very
- * long time, so a precomputed value is provided below.
- * You may run dh_genprime to generate a new value.
- */
-char *my_dhm_P = 
-    "E4004C1F94182000103D883A448B3F80" \
-    "2CE4B44A83301270002C20D0321CFD00" \
-    "11CCEF784C26A400F43DFB901BCA7538" \
-    "F2C6B176001CF5A0FD16D2C48B1D0C1C" \
-    "F6AC8E1DA6BCC3B4E1F96B0564965300" \
-    "FFA1D0B601EB2800F489AA512C4B248C" \
-    "01F76949A60BB7F00A40B1EAB64BDD48" \
-    "E8A700D60B7F1200FA8E77B0A979DABF";
-
-char *my_dhm_G = "4";
-
-/*
- * Sorted by order of preference
- */
-int my_ciphersuites[] =
-{
-    SSL_EDH_RSA_AES_256_SHA,
-    SSL_EDH_RSA_CAMELLIA_256_SHA,
-    SSL_EDH_RSA_AES_128_SHA,
-    SSL_EDH_RSA_CAMELLIA_128_SHA,
-    SSL_EDH_RSA_DES_168_SHA,
-    SSL_RSA_AES_256_SHA,
-    SSL_RSA_CAMELLIA_256_SHA,
-    SSL_RSA_AES_128_SHA,
-    SSL_RSA_CAMELLIA_128_SHA,
-    SSL_RSA_DES_168_SHA,
-    SSL_RSA_RC4_128_SHA,
-    SSL_RSA_RC4_128_MD5,
-    0
-};
 
 #define DEBUG_LEVEL 0
 
@@ -295,13 +259,8 @@
         ssl_set_bio( &ssl, net_recv, &client_fd,
                            net_send, &client_fd );
 
-        ssl_set_ciphersuites( &ssl, my_ciphersuites );
-
         ssl_set_ca_chain( &ssl, srvcert.next, NULL, NULL );
         ssl_set_own_cert( &ssl, &srvcert, &rsa );
-#if defined(POLARSSL_DHM_C)
-        ssl_set_dh_param( &ssl, my_dhm_P, my_dhm_G );
-#endif
 
         /*
          * 5. Handshake
diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c
index b303df8..4eb49e2 100644
--- a/programs/ssl/ssl_mail_client.c
+++ b/programs/ssl/ssl_mail_client.c
@@ -172,7 +172,7 @@
 
     printf( "  . Peer certificate information    ...\n" );
     x509parse_cert_info( (char *) buf, sizeof( buf ) - 1, "      ",
-                         ssl_get_peer_cert( &ssl ) );
+                         ssl_get_peer_cert( ssl ) );
     printf( "%s\n", buf );
 
     return( 0 );
@@ -588,9 +588,7 @@
     ssl_set_bio( &ssl, net_recv, &server_fd,
             net_send, &server_fd );
 
-    if( opt.force_ciphersuite[0] == DFL_FORCE_CIPHER )
-        ssl_set_ciphersuites( &ssl, ssl_default_ciphersuites );
-    else
+    if( opt.force_ciphersuite[0] != DFL_FORCE_CIPHER )
         ssl_set_ciphersuites( &ssl, opt.force_ciphersuite );
 
     ssl_set_ca_chain( &ssl, &cacert, NULL, opt.server_name );
diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c
index 604612f..fc1f4ed 100644
--- a/programs/ssl/ssl_server.c
+++ b/programs/ssl/ssl_server.c
@@ -54,90 +54,6 @@
     "<h2>PolarSSL Test Server</h2>\r\n" \
     "<p>Successful connection using: %s</p>\r\n"
 
-/*
- * Sorted by order of preference
- */
-int my_ciphersuites[] =
-{
-#if defined(POLARSSL_DHM_C)
-#if defined(POLARSSL_AES_C)
-#if defined(POLARSSL_SHA2_C)
-    SSL_EDH_RSA_AES_256_SHA256,
-    SSL_EDH_RSA_AES_128_SHA256,
-#endif /* POLARSSL_SHA2_C */
-    SSL_EDH_RSA_AES_256_SHA,
-    SSL_EDH_RSA_AES_128_SHA,
-#if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA4_C)
-    SSL_EDH_RSA_AES_256_GCM_SHA384,
-#endif
-#if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
-    SSL_EDH_RSA_AES_128_GCM_SHA256,
-#endif
-#endif
-#if defined(POLARSSL_CAMELLIA_C)
-#if defined(POLARSSL_SHA2_C)
-    SSL_EDH_RSA_CAMELLIA_256_SHA256,
-    SSL_EDH_RSA_CAMELLIA_128_SHA256,
-#endif /* POLARSSL_SHA2_C */
-    SSL_EDH_RSA_CAMELLIA_256_SHA,
-    SSL_EDH_RSA_CAMELLIA_128_SHA,
-#endif
-#if defined(POLARSSL_DES_C)
-    SSL_EDH_RSA_DES_168_SHA,
-#endif
-#endif
-
-#if defined(POLARSSL_AES_C)
-#if defined(POLARSSL_SHA2_C)
-    SSL_RSA_AES_256_SHA256,
-#endif /* POLARSSL_SHA2_C */
-    SSL_RSA_AES_256_SHA,
-#endif
-#if defined(POLARSSL_CAMELLIA_C)
-#if defined(POLARSSL_SHA2_C)
-    SSL_RSA_CAMELLIA_256_SHA256,
-#endif /* POLARSSL_SHA2_C */
-    SSL_RSA_CAMELLIA_256_SHA,
-#endif
-#if defined(POLARSSL_AES_C)
-#if defined(POLARSSL_SHA2_C)
-    SSL_RSA_AES_128_SHA256,
-#endif /* POLARSSL_SHA2_C */
-    SSL_RSA_AES_128_SHA,
-#if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA4_C)
-    SSL_RSA_AES_256_GCM_SHA384,
-#endif
-#if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
-    SSL_RSA_AES_128_GCM_SHA256,
-#endif
-#endif
-#if defined(POLARSSL_CAMELLIA_C)
-#if defined(POLARSSL_SHA2_C)
-    SSL_RSA_CAMELLIA_128_SHA256,
-#endif /* POLARSSL_SHA2_C */
-    SSL_RSA_CAMELLIA_128_SHA,
-#endif
-#if defined(POLARSSL_DES_C)
-    SSL_RSA_DES_168_SHA,
-#endif
-#if defined(POLARSSL_ARC4_C)
-    SSL_RSA_RC4_128_SHA,
-    SSL_RSA_RC4_128_MD5,
-#endif
-#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
-#if defined(POLARSSL_DES_C)
-    SSL_EDH_RSA_DES_SHA,
-    SSL_RSA_DES_SHA,
-#endif
-#if defined(POLARSSL_CIPHER_NULL_CIPHER)
-    SSL_RSA_NULL_MD5,
-    SSL_RSA_NULL_SHA,
-    SSL_RSA_NULL_SHA256,
-#endif
-#endif
-    0
-};
-
 #define DEBUG_LEVEL 0
 
 void my_debug( void *ctx, int level, const char *str )
@@ -282,8 +198,6 @@
                                  ssl_cache_set, &cache );
 #endif
 
-    ssl_set_ciphersuites( &ssl, my_ciphersuites );
-
     ssl_set_ca_chain( &ssl, srvcert.next, NULL, NULL );
     ssl_set_own_cert( &ssl, &srvcert, &rsa );
 
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 3e2c35e..f6cf487 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -92,6 +92,96 @@
     }
 }
 
+/*
+ * Sorted by order of preference
+ */
+int my_ciphersuites[] =
+{
+#if defined(POLARSSL_DHM_C)
+#if defined(POLARSSL_AES_C)
+#if defined(POLARSSL_SHA2_C)
+    TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
+#endif /* POLARSSL_SHA2_C */
+#if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA4_C)
+    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
+#endif
+    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
+#if defined(POLARSSL_SHA2_C)
+    TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
+#endif
+#if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
+    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
+#endif
+    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
+#endif
+#if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_SHA2_C)
+    TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
+#endif /* POLARSSL_SHA2_C */
+    TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
+#if defined(POLARSSL_SHA2_C)
+    TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+#endif /* POLARSSL_SHA2_C */
+    TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
+#endif
+#if defined(POLARSSL_DES_C)
+    TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
+#endif
+#endif
+
+#if defined(POLARSSL_AES_C)
+#if defined(POLARSSL_SHA2_C)
+    TLS_RSA_WITH_AES_256_CBC_SHA256,
+#endif /* POLARSSL_SHA2_C */
+#if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA4_C)
+    TLS_RSA_WITH_AES_256_GCM_SHA384,
+#endif /* POLARSSL_SHA2_C */
+    TLS_RSA_WITH_AES_256_CBC_SHA,
+#endif
+#if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_SHA2_C)
+    TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
+#endif /* POLARSSL_SHA2_C */
+    TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
+#endif
+#if defined(POLARSSL_AES_C)
+#if defined(POLARSSL_SHA2_C)
+    TLS_RSA_WITH_AES_128_CBC_SHA256,
+#endif /* POLARSSL_SHA2_C */
+#if defined(POLARSSL_GCM_C) && defined(POLARSSL_SHA2_C)
+    TLS_RSA_WITH_AES_128_GCM_SHA256,
+#endif /* POLARSSL_SHA2_C */
+    TLS_RSA_WITH_AES_128_CBC_SHA,
+#endif
+#if defined(POLARSSL_CAMELLIA_C)
+#if defined(POLARSSL_SHA2_C)
+    TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+#endif /* POLARSSL_SHA2_C */
+    TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
+#endif
+#if defined(POLARSSL_DES_C)
+    TLS_RSA_WITH_3DES_EDE_CBC_SHA,
+#endif
+#if defined(POLARSSL_ARC4_C)
+    TLS_RSA_WITH_RC4_128_SHA,
+    TLS_RSA_WITH_RC4_128_MD5,
+#endif
+
+#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
+#if defined(POLARSSL_DES_C)
+    TLS_DHE_RSA_WITH_DES_CBC_SHA,
+    TLS_RSA_WITH_DES_CBC_SHA,
+#endif
+#if defined(POLARSSL_CIPHER_NULL_CIPHER)
+    TLS_RSA_WITH_NULL_MD5,
+    TLS_RSA_WITH_NULL_SHA,
+    TLS_RSA_WITH_NULL_SHA256,
+#endif
+#endif
+    0
+};
+
+
 #if defined(POLARSSL_FS_IO)
 #define USAGE_IO \
     "    ca_file=%%s          default: \"\" (pre-loaded)\n" \
@@ -395,7 +485,7 @@
 #endif
 
     if( opt.force_ciphersuite[0] == DFL_FORCE_CIPHER )
-        ssl_set_ciphersuites( &ssl, ssl_default_ciphersuites );
+        ssl_set_ciphersuites( &ssl, my_ciphersuites );
     else
         ssl_set_ciphersuites( &ssl, opt.force_ciphersuite );
 
diff --git a/tests/compat.sh b/tests/compat.sh
index c6bfa6e..4c292b0 100644
--- a/tests/compat.sh
+++ b/tests/compat.sh
@@ -1,4 +1,4 @@
-killall -q openssl ssl_server
+killall -q openssl ssl_server ssl_server2
 
 MODES="ssl3 tls1 tls1_1 tls1_2"
 #VERIFY="YES"
@@ -16,23 +16,23 @@
 echo "Running for $MODE"
 echo "-----------"
 
-P_CIPHERS="                             \
-    SSL-EDH-RSA-AES-128-SHA             \
-    SSL-EDH-RSA-AES-256-SHA             \
-    SSL-EDH-RSA-CAMELLIA-128-SHA        \
-    SSL-EDH-RSA-CAMELLIA-256-SHA        \
-    SSL-EDH-RSA-DES-168-SHA             \
-    SSL-RSA-AES-256-SHA                 \
-    SSL-RSA-CAMELLIA-256-SHA            \
-    SSL-RSA-AES-128-SHA                 \
-    SSL-RSA-CAMELLIA-128-SHA            \
-    SSL-RSA-DES-168-SHA                 \
-    SSL-RSA-RC4-128-SHA                 \
-    SSL-RSA-RC4-128-MD5                 \
-    SSL-RSA-NULL-MD5                    \
-    SSL-RSA-NULL-SHA                    \
-    SSL-RSA-DES-SHA                     \
-    SSL-EDH-RSA-DES-SHA                 \
+P_CIPHERS="                                 \
+    TLS-DHE-RSA-WITH-AES-128-CBC-SHA        \
+    TLS-DHE-RSA-WITH-AES-256-CBC-SHA        \
+    TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA   \
+    TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA   \
+    TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA       \
+    TLS-RSA-WITH-AES-256-CBC-SHA            \
+    TLS-RSA-WITH-CAMELLIA-256-CBC-SHA       \
+    TLS-RSA-WITH-AES-128-CBC-SHA            \
+    TLS-RSA-WITH-CAMELLIA-128-CBC-SHA       \
+    TLS-RSA-WITH-3DES-EDE-CBC-SHA           \
+    TLS-RSA-WITH-RC4-128-SHA                \
+    TLS-RSA-WITH-RC4-128-MD5                \
+    TLS-RSA-WITH-NULL-MD5                   \
+    TLS-RSA-WITH-NULL-SHA                   \
+    TLS-RSA-WITH-DES-CBC-SHA                \
+    TLS-DHE-RSA-WITH-DES-CBC-SHA            \
     "
 
 O_CIPHERS="                         \
@@ -56,12 +56,12 @@
 
 # Also add SHA256 ciphersuites
 #
-P_CIPHERS="$P_CIPHERS               \
-    SSL-RSA-NULL-SHA256             \
-    SSL-RSA-AES-128-SHA256          \
-    SSL-EDH-RSA-AES-128-SHA256      \
-    SSL-RSA-AES-256-SHA256          \
-    SSL-EDH-RSA-AES-256-SHA256      \
+P_CIPHERS="$P_CIPHERS                       \
+    TLS-RSA-WITH-NULL-SHA256                \
+    TLS-RSA-WITH-AES-128-CBC-SHA256         \
+    TLS-DHE-RSA-WITH-AES-128-CBC-SHA256     \
+    TLS-RSA-WITH-AES-256-CBC-SHA256         \
+    TLS-DHE-RSA-WITH-AES-256-CBC-SHA256     \
     "
 
 O_CIPHERS="$O_CIPHERS           \
@@ -74,11 +74,11 @@
 
 if [ "$MODE" = "tls1_2" ];
 then
-    P_CIPHERS="$P_CIPHERS               \
-        SSL-RSA-AES-128-GCM-SHA256      \
-        SSL-EDH-RSA-AES-128-GCM-SHA256  \
-        SSL-RSA-AES-256-GCM-SHA384      \
-        SSL-EDH-RSA-AES-256-GCM-SHA384  \
+    P_CIPHERS="$P_CIPHERS                   \
+        TLS-RSA-WITH-AES-128-GCM-SHA256     \
+        TLS-RSA-WITH-AES-256-GCM-SHA384     \
+        TLS-DHE-RSA-WITH-AES-128-GCM-SHA256 \
+        TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 \
         "
 
     O_CIPHERS="$O_CIPHERS           \
@@ -112,7 +112,7 @@
 done
 kill $PROCESS_ID
 
-../programs/ssl/ssl_server > /dev/null &
+../programs/ssl/ssl_server2 > /dev/null &
 PROCESS_ID=$!
 
 sleep 1
@@ -140,7 +140,7 @@
 
 kill $PROCESS_ID
 
-../programs/ssl/ssl_server > /dev/null &
+../programs/ssl/ssl_server2 > /dev/null &
 PROCESS_ID=$!
 
 sleep 1
@@ -150,11 +150,11 @@
 #
 if [ "$MODE" = "tls1_2" ];
 then
-    P_CIPHERS="$P_CIPHERS               \
-        SSL-RSA-CAMELLIA-128-SHA256     \
-        SSL-EDH-RSA-CAMELLIA-128-SHA256 \
-        SSL-RSA-CAMELLIA-256-SHA256     \
-        SSL-EDH-RSA-CAMELLIA-256-SHA256 \
+    P_CIPHERS="$P_CIPHERS                        \
+        TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256     \
+        TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256 \
+        TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256     \
+        TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256 \
         "
 fi
 
