- Improved information provided about current Hashing, Cipher and Suite capabilities

diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 74e51a3..4eb0b68 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -1863,52 +1863,52 @@
     return( ssl->verify_result );
 }
 
-const char *ssl_get_cipher( const ssl_context *ssl )
+const char *ssl_get_cipher_name( const int cipher_id )
 {
-    switch( ssl->session->cipher )
+    switch( cipher_id )
     {
 #if defined(POLARSSL_ARC4_C)
         case SSL_RSA_RC4_128_MD5:
-            return( "SSL_RSA_RC4_128_MD5" );
+            return( "SSL-RSA-RC4-128-MD5" );
 
         case SSL_RSA_RC4_128_SHA:
-            return( "SSL_RSA_RC4_128_SHA" );
+            return( "SSL-RSA-RC4-128-SHA" );
 #endif
 
 #if defined(POLARSSL_DES_C)
         case SSL_RSA_DES_168_SHA:
-            return( "SSL_RSA_DES_168_SHA" );
+            return( "SSL-RSA-DES-168-SHA" );
 
         case SSL_EDH_RSA_DES_168_SHA:
-            return( "SSL_EDH_RSA_DES_168_SHA" );
+            return( "SSL-EDH-RSA-DES-168-SHA" );
 #endif
 
 #if defined(POLARSSL_AES_C)
         case SSL_RSA_AES_128_SHA:
-            return( "SSL_RSA_AES_128_SHA" );
+            return( "SSL-RSA-AES-128-SHA" );
 
         case SSL_EDH_RSA_AES_128_SHA:
-            return( "SSL_EDH_RSA_AES_128_SHA" );
+            return( "SSL-EDH-RSA-AES-128-SHA" );
 
         case SSL_RSA_AES_256_SHA:
-            return( "SSL_RSA_AES_256_SHA" );
+            return( "SSL-RSA-AES-256-SHA" );
 
         case SSL_EDH_RSA_AES_256_SHA:
-            return( "SSL_EDH_RSA_AES_256_SHA" );
+            return( "SSL-EDH-RSA-AES-256-SHA" );
 #endif
 
 #if defined(POLARSSL_CAMELLIA_C)
         case SSL_RSA_CAMELLIA_128_SHA:
-            return( "SSL_RSA_CAMELLIA_128_SHA" );
+            return( "SSL-RSA-CAMELLIA-128-SHA" );
 
         case SSL_EDH_RSA_CAMELLIA_128_SHA:
-            return( "SSL_EDH_RSA_CAMELLIA_128_SHA" );
+            return( "SSL-EDH-RSA-CAMELLIA-128-SHA" );
 
         case SSL_RSA_CAMELLIA_256_SHA:
-            return( "SSL_RSA_CAMELLIA_256_SHA" );
+            return( "SSL-RSA-CAMELLIA-256-SHA" );
 
         case SSL_EDH_RSA_CAMELLIA_256_SHA:
-            return( "SSL_EDH_RSA_CAMELLIA_256_SHA" );
+            return( "SSL-EDH-RSA-CAMELLIA-256-SHA" );
 #endif
 
     default:
@@ -1918,6 +1918,52 @@
     return( "unknown" );
 }
 
+int ssl_get_cipher_id( const char *cipher_name )
+{
+#if defined(POLARSSL_ARC4_C)
+    if (0 == strcasecmp(cipher_name, "SSL-RSA-RC4-128-MD5"))
+        return( SSL_RSA_RC4_128_MD5 );
+    if (0 == strcasecmp(cipher_name, "SSL-RSA-RC4-128-SHA"))
+        return( SSL_RSA_RC4_128_SHA );
+#endif
+
+#if defined(POLARSSL_DES_C)
+    if (0 == strcasecmp(cipher_name, "SSL-RSA-DES-168-SHA"))
+        return( SSL_RSA_DES_168_SHA );
+    if (0 == strcasecmp(cipher_name, "SSL-EDH-RSA-DES-168-SHA"))
+        return( SSL_EDH_RSA_DES_168_SHA );
+#endif
+
+#if defined(POLARSSL_AES_C)
+    if (0 == strcasecmp(cipher_name, "SSL-RSA-AES-128-SHA"))
+        return( SSL_RSA_AES_128_SHA );
+    if (0 == strcasecmp(cipher_name, "SSL-EDH-RSA-AES-128-SHA"))
+        return( SSL_EDH_RSA_AES_128_SHA );
+    if (0 == strcasecmp(cipher_name, "SSL-RSA-AES-256-SHA"))
+        return( SSL_RSA_AES_256_SHA );
+    if (0 == strcasecmp(cipher_name, "SSL-EDH-RSA-AES-256-SHA"))
+        return( SSL_EDH_RSA_AES_256_SHA );
+#endif
+
+#if defined(POLARSSL_CAMELLIA_C)
+    if (0 == strcasecmp(cipher_name, "SSL-RSA-CAMELLIA-128-SHA"))
+        return( SSL_RSA_CAMELLIA_128_SHA );
+    if (0 == strcasecmp(cipher_name, "SSL-EDH-RSA-CAMELLIA-128-SHA"))
+        return( SSL_EDH_RSA_CAMELLIA_128_SHA );
+    if (0 == strcasecmp(cipher_name, "SSL-RSA-CAMELLIA-256-SHA"))
+        return( SSL_RSA_CAMELLIA_256_SHA );
+    if (0 == strcasecmp(cipher_name, "SSL-EDH-RSA-CAMELLIA-256-SHA"))
+        return( SSL_EDH_RSA_CAMELLIA_256_SHA );
+#endif
+
+    return( 0 );
+}
+
+const char *ssl_get_cipher( const ssl_context *ssl )
+{
+    return ssl_get_cipher_name( ssl->session->cipher );
+}
+
 const char *ssl_get_version( const ssl_context *ssl )
 {
     switch( ssl->minor_ver )