diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index edd1b8e..03975d2 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -1108,7 +1108,7 @@
 int ssl_write_certificate( ssl_context *ssl )
 {
     int ret, i, n;
-    x509_cert *crt;
+    const x509_cert *crt;
 
     SSL_DEBUG_MSG( 2, ( "=> write certificate" ) );
 
@@ -1664,7 +1664,7 @@
 }
 
 void ssl_set_dbg( ssl_context *ssl,
-                  void (*f_dbg)(void *, int, char *),
+                  void (*f_dbg)(void *, int, const char *),
                   void  *p_dbg )
 {
     ssl->f_dbg      = f_dbg;
@@ -1717,7 +1717,7 @@
     ssl->rsa_key    = rsa_key;
 }
 
-int ssl_set_dh_param( ssl_context *ssl, char *dhm_P, char *dhm_G )
+int ssl_set_dh_param( ssl_context *ssl, const char *dhm_P, const char *dhm_G )
 {
     int ret;
 
@@ -1736,7 +1736,7 @@
     return( 0 );
 }
 
-int ssl_set_hostname( ssl_context *ssl, char *hostname )
+int ssl_set_hostname( ssl_context *ssl, const char *hostname )
 {
     if( hostname == NULL )
         return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
@@ -1755,17 +1755,17 @@
 /*
  * SSL get accessors
  */
-int ssl_get_bytes_avail( ssl_context *ssl )
+int ssl_get_bytes_avail( const ssl_context *ssl )
 {
     return( ssl->in_offt == NULL ? 0 : ssl->in_msglen );
 }
 
-int ssl_get_verify_result( ssl_context *ssl )
+int ssl_get_verify_result( const ssl_context *ssl )
 {
     return( ssl->verify_result );
 }
 
-char *ssl_get_cipher( ssl_context *ssl )
+const char *ssl_get_cipher( const ssl_context *ssl )
 {
     switch( ssl->session->cipher )
     {
@@ -1943,7 +1943,7 @@
 /*
  * Send application data to be encrypted by the SSL layer
  */
-int ssl_write( ssl_context *ssl, unsigned char *buf, int len )
+int ssl_write( ssl_context *ssl, const unsigned char *buf, int len )
 {
     int ret, n;
 
