Fixed const correctness issues in programs and tests
diff --git a/programs/pkey/dh_client.c b/programs/pkey/dh_client.c
index db9283a..b3a2476 100644
--- a/programs/pkey/dh_client.c
+++ b/programs/pkey/dh_client.c
@@ -70,7 +70,7 @@
     unsigned char *p, *end;
     unsigned char buf[2048];
     unsigned char hash[20];
-    char *pers = "dh_client";
+    const char *pers = "dh_client";
 
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -92,7 +92,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
diff --git a/programs/pkey/dh_genprime.c b/programs/pkey/dh_genprime.c
index 94f1c62..5732f50 100644
--- a/programs/pkey/dh_genprime.c
+++ b/programs/pkey/dh_genprime.c
@@ -62,7 +62,7 @@
     mpi G, P, Q;
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
-    char *pers = "dh_genprime";
+    const char *pers = "dh_genprime";
     FILE *fout;
 
     ((void) argc);
@@ -83,7 +83,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
diff --git a/programs/pkey/dh_server.c b/programs/pkey/dh_server.c
index 8babef2..9ea2a78 100644
--- a/programs/pkey/dh_server.c
+++ b/programs/pkey/dh_server.c
@@ -71,7 +71,7 @@
     unsigned char buf[2048];
     unsigned char hash[20];
     unsigned char buf2[2];
-    char *pers = "dh_server";
+    const char *pers = "dh_server";
 
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -93,7 +93,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
diff --git a/programs/pkey/key_app.c b/programs/pkey/key_app.c
index ebe94a7..fc0269e 100644
--- a/programs/pkey/key_app.c
+++ b/programs/pkey/key_app.c
@@ -53,9 +53,9 @@
 struct options
 {
     int mode;                   /* the mode to run the application in   */
-    char *filename;             /* filename of the key file             */
-    char *password;             /* password for the private key         */
-    char *password_file;        /* password_file for the private key    */
+    const char *filename;       /* filename of the key file             */
+    const char *password;       /* password for the private key         */
+    const char *password_file;  /* password_file for the private key    */
     int debug_level;            /* level of debugging                   */
 } opt;
 
diff --git a/programs/pkey/key_app_writer.c b/programs/pkey/key_app_writer.c
index ab05952..d8465ca 100644
--- a/programs/pkey/key_app_writer.c
+++ b/programs/pkey/key_app_writer.c
@@ -59,10 +59,10 @@
 struct options
 {
     int mode;                   /* the mode to run the application in   */
-    char *filename;             /* filename of the key file             */
+    const char *filename;       /* filename of the key file             */
     int debug_level;            /* level of debugging                   */
     int output_mode;            /* the output mode to use               */
-    char *output_file;          /* where to store the constructed key file  */
+    const char *output_file;    /* where to store the constructed key file  */
 } opt;
 
 void my_debug( void *ctx, int level, const char *str )
@@ -74,7 +74,7 @@
     }
 }
 
-void write_public_key( rsa_context *rsa, char *output_file )
+void write_public_key( rsa_context *rsa, const char *output_file )
 {
     FILE *f;
     unsigned char output_buf[16000];
@@ -111,7 +111,7 @@
     fclose(f);
 }
 
-void write_private_key( rsa_context *rsa, char *output_file )
+void write_private_key( rsa_context *rsa, const char *output_file )
 {
     FILE *f;
     unsigned char output_buf[16000];
diff --git a/programs/pkey/rsa_encrypt.c b/programs/pkey/rsa_encrypt.c
index aa6ca0e..83dcef2 100644
--- a/programs/pkey/rsa_encrypt.c
+++ b/programs/pkey/rsa_encrypt.c
@@ -60,7 +60,7 @@
     ctr_drbg_context ctr_drbg;
     unsigned char input[1024];
     unsigned char buf[512];
-    char *pers = "rsa_encrypt";
+    const char *pers = "rsa_encrypt";
 
     ret = 1;
 
@@ -80,7 +80,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
diff --git a/programs/pkey/rsa_genkey.c b/programs/pkey/rsa_genkey.c
index 424097e..68e33e5 100644
--- a/programs/pkey/rsa_genkey.c
+++ b/programs/pkey/rsa_genkey.c
@@ -62,7 +62,7 @@
     ctr_drbg_context ctr_drbg;
     FILE *fpub  = NULL;
     FILE *fpriv = NULL;
-    char *pers = "rsa_genkey";
+    const char *pers = "rsa_genkey";
 
     ((void) argc);
     ((void) argv);
@@ -72,7 +72,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
diff --git a/programs/pkey/rsa_sign_pss.c b/programs/pkey/rsa_sign_pss.c
index ffc5de0..17e772a 100644
--- a/programs/pkey/rsa_sign_pss.c
+++ b/programs/pkey/rsa_sign_pss.c
@@ -69,7 +69,7 @@
     unsigned char hash[20];
     unsigned char buf[POLARSSL_MPI_MAX_SIZE];
     char filename[512];
-    char *pers = "rsa_sign_pss";
+    const char *pers = "rsa_sign_pss";
 
     ret = 1;
 
@@ -89,7 +89,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
diff --git a/programs/random/gen_random_ctr_drbg.c b/programs/random/gen_random_ctr_drbg.c
index cb46593..fcdc2ee 100644
--- a/programs/random/gen_random_ctr_drbg.c
+++ b/programs/random/gen_random_ctr_drbg.c
@@ -61,7 +61,7 @@
     }
 
     entropy_init( &entropy );
-    ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy, (unsigned char *) "RANDOM_GEN", 10 );
+    ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy, (const unsigned char *) "RANDOM_GEN", 10 );
     if( ret != 0 )
     {
         printf( "failed in ctr_drbg_init: %d\n", ret );
diff --git a/programs/ssl/ssl_client1.c b/programs/ssl/ssl_client1.c
index 78ad43e..a902376 100644
--- a/programs/ssl/ssl_client1.c
+++ b/programs/ssl/ssl_client1.c
@@ -74,7 +74,7 @@
 {
     int ret, len, server_fd;
     unsigned char buf[1024];
-    char *pers = "ssl_client1";
+    const char *pers = "ssl_client1";
 
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -95,7 +95,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
@@ -110,7 +111,7 @@
     fflush( stdout );
 
 #if defined(POLARSSL_CERTS_C)
-    ret = x509parse_crt( &cacert, (unsigned char *) test_ca_crt,
+    ret = x509parse_crt( &cacert, (const unsigned char *) test_ca_crt,
                          strlen( test_ca_crt ) );
 #else
     ret = 1;
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index 89820a3..2247d5c 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -63,14 +63,14 @@
  */
 struct options
 {
-    char *server_name;          /* hostname of the server (client only)     */
+    const char *server_name;    /* hostname of the server (client only)     */
     int server_port;            /* port on which the ssl service runs       */
     int debug_level;            /* level of debugging                       */
-    char *request_page;         /* page on server to request                */
-    char *ca_file;              /* the file with the CA certificate(s)      */
-    char *ca_path;              /* the path with the CA certificate(s) reside */
-    char *crt_file;             /* the file with the client certificate     */
-    char *key_file;             /* the file with the client key             */
+    const char *request_page;   /* page on server to request                */
+    const char *ca_file;        /* the file with the CA certificate(s)      */
+    const char *ca_path;        /* the path with the CA certificate(s) reside */
+    const char *crt_file;       /* the file with the client certificate     */
+    const char *key_file;       /* the file with the client key             */
     int force_ciphersuite[2];   /* protocol/ciphersuite to use, or all      */
     int renegotiation;          /* enable / disable renegotiation           */
     int allow_legacy;           /* allow legacy renegotiation               */
@@ -182,7 +182,7 @@
 {
     int ret = 0, len, server_fd;
     unsigned char buf[1024];
-    char *pers = "ssl_client2";
+    const char *pers = "ssl_client2";
 
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -365,7 +365,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned -0x%x\n", -ret );
         goto exit;
@@ -387,7 +388,7 @@
     else 
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_crt( &cacert, (unsigned char *) test_ca_crt,
+        ret = x509parse_crt( &cacert, (const unsigned char *) test_ca_crt,
                 strlen( test_ca_crt ) );
 #else
     {
@@ -417,7 +418,7 @@
     else 
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_crt( &clicert, (unsigned char *) test_cli_crt,
+        ret = x509parse_crt( &clicert, (const unsigned char *) test_cli_crt,
                 strlen( test_cli_crt ) );
 #else
     {
@@ -437,7 +438,7 @@
     else
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_key( &rsa, (unsigned char *) test_cli_key,
+        ret = x509parse_key( &rsa, (const unsigned char *) test_cli_key,
                 strlen( test_cli_key ), NULL, 0 );
 #else
     {
diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c
index 0242770..9e30451 100644
--- a/programs/ssl/ssl_fork_server.c
+++ b/programs/ssl/ssl_fork_server.c
@@ -96,7 +96,7 @@
     int listen_fd;
     int client_fd;
     unsigned char buf[1024];
-    char *pers = "ssl_fork_server";
+    const char *pers = "ssl_fork_server";
 
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -117,7 +117,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                    (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
@@ -138,7 +139,7 @@
      * Instead, you may want to use x509parse_crtfile() to read the
      * server and CA certificates, as well as x509parse_keyfile().
      */
-    ret = x509parse_crt( &srvcert, (unsigned char *) test_srv_crt,
+    ret = x509parse_crt( &srvcert, (const unsigned char *) test_srv_crt,
                          strlen( test_srv_crt ) );
     if( ret != 0 )
     {
@@ -146,7 +147,7 @@
         goto exit;
     }
 
-    ret = x509parse_crt( &srvcert, (unsigned char *) test_ca_crt,
+    ret = x509parse_crt( &srvcert, (const unsigned char *) test_ca_crt,
                          strlen( test_ca_crt ) );
     if( ret != 0 )
     {
@@ -155,7 +156,7 @@
     }
 
     rsa_init( &rsa, RSA_PKCS_V15, 0 );
-    ret =  x509parse_key( &rsa, (unsigned char *) test_srv_key,
+    ret =  x509parse_key( &rsa, (const unsigned char *) test_srv_key,
                           strlen( test_srv_key ), NULL, 0 );
     if( ret != 0 )
     {
@@ -218,7 +219,8 @@
         if( pid != 0 )
         {
             if( ( ret = ctr_drbg_reseed( &ctr_drbg,
-                                         (unsigned char* ) "parent", 6 ) ) != 0 )
+                                         (const unsigned char *) "parent",
+                                         6 ) ) != 0 )
             {
                 printf( " failed\n  ! ctr_drbg_reseed returned %d\n", ret );
                 goto exit;
@@ -237,7 +239,8 @@
         fflush( stdout );
 
         if( ( ret = ctr_drbg_reseed( &ctr_drbg,
-                                     (unsigned char *) "child", 5 ) ) != 0 )
+                                     (const unsigned char *) "child",
+                                     5 ) ) != 0 )
         {
             printf( " failed\n  ! ctr_drbg_reseed returned %d\n", ret );
             goto exit;
diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c
index 4eb49e2..86b3548 100644
--- a/programs/ssl/ssl_mail_client.c
+++ b/programs/ssl/ssl_mail_client.c
@@ -77,18 +77,18 @@
  */
 struct options
 {
-    char *server_name;          /* hostname of the server (client only)     */
+    const char *server_name;    /* hostname of the server (client only)     */
     int server_port;            /* port on which the ssl service runs       */
     int debug_level;            /* level of debugging                       */
     int authentication;         /* if authentication is required            */
     int mode;                   /* SSL/TLS (0) or STARTTLS (1)              */
-    char *user_name;            /* username to use for authentication       */
-    char *user_pwd;             /* password to use for authentication       */
-    char *mail_from;            /* E-Mail address to use as sender          */
-    char *mail_to;              /* E-Mail address to use as recipient       */
-    char *ca_file;              /* the file with the CA certificate(s)      */
-    char *crt_file;             /* the file with the client certificate     */
-    char *key_file;             /* the file with the client key             */
+    const char *user_name;      /* username to use for authentication       */
+    const char *user_pwd;       /* password to use for authentication       */
+    const char *mail_from;      /* E-Mail address to use as sender          */
+    const char *mail_to;        /* E-Mail address to use as recipient       */
+    const char *ca_file;        /* the file with the CA certificate(s)      */
+    const char *crt_file;       /* the file with the client certificate     */
+    const char *key_file;       /* the file with the client key             */
     int force_ciphersuite[2];   /* protocol/ciphersuite to use, or all      */
 } opt;
 
@@ -344,7 +344,7 @@
     unsigned char base[1024];
 #endif
     char hostname[32];
-    char *pers = "ssl_mail_client";
+    const char *pers = "ssl_mail_client";
 
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -464,7 +464,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
@@ -484,7 +485,7 @@
     else
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_crt( &cacert, (unsigned char *) test_ca_crt,
+        ret = x509parse_crt( &cacert, (const unsigned char *) test_ca_crt,
                 strlen( test_ca_crt ) );
 #else
     {
@@ -514,7 +515,7 @@
     else 
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_crt( &clicert, (unsigned char *) test_cli_crt,
+        ret = x509parse_crt( &clicert, (const unsigned char *) test_cli_crt,
                 strlen( test_cli_crt ) );
 #else
     {
@@ -534,7 +535,7 @@
     else
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_key( &rsa, (unsigned char *) test_cli_key,
+        ret = x509parse_key( &rsa, (const unsigned char *) test_cli_key,
                 strlen( test_cli_key ), NULL, 0 );
 #else
     {
@@ -691,7 +692,8 @@
         fflush( stdout );
 
         n = sizeof( buf );
-        len = base64_encode( base, &n, (unsigned char *) opt.user_name, strlen( opt.user_name ) );
+        len = base64_encode( base, &n, (const unsigned char *) opt.user_name,
+                             strlen( opt.user_name ) );
         len = sprintf( (char *) buf, "%s\n", base );
         ret = write_ssl_and_get_response( &ssl, buf, len );
         if( ret < 300 || ret > 399 )
@@ -705,7 +707,8 @@
         printf( "  > Write password to server: %s", opt.user_pwd );
         fflush( stdout );
 
-        len = base64_encode( base, &n, (unsigned char *) opt.user_pwd, strlen( opt.user_pwd ) );
+        len = base64_encode( base, &n, (const unsigned char *) opt.user_pwd,
+                             strlen( opt.user_pwd ) );
         len = sprintf( (char *) buf, "%s\n", base );
         ret = write_ssl_and_get_response( &ssl, buf, len );
         if( ret < 200 || ret > 399 )
diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c
index fc1f4ed..78d9065 100644
--- a/programs/ssl/ssl_server.c
+++ b/programs/ssl/ssl_server.c
@@ -87,7 +87,7 @@
     int listen_fd;
     int client_fd = -1;
     unsigned char buf[1024];
-    char *pers = "ssl_server";
+    const char *pers = "ssl_server";
 
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -118,7 +118,7 @@
      * Instead, you may want to use x509parse_crtfile() to read the
      * server and CA certificates, as well as x509parse_keyfile().
      */
-    ret = x509parse_crt( &srvcert, (unsigned char *) test_srv_crt,
+    ret = x509parse_crt( &srvcert, (const unsigned char *) test_srv_crt,
                          strlen( test_srv_crt ) );
     if( ret != 0 )
     {
@@ -126,7 +126,7 @@
         goto exit;
     }
 
-    ret = x509parse_crt( &srvcert, (unsigned char *) test_ca_crt,
+    ret = x509parse_crt( &srvcert, (const unsigned char *) test_ca_crt,
                          strlen( test_ca_crt ) );
     if( ret != 0 )
     {
@@ -135,7 +135,7 @@
     }
 
     rsa_init( &rsa, RSA_PKCS_V15, 0 );
-    ret =  x509parse_key( &rsa, (unsigned char *) test_srv_key,
+    ret =  x509parse_key( &rsa, (const unsigned char *) test_srv_key,
                           strlen( test_srv_key ), NULL, 0 );
     if( ret != 0 )
     {
@@ -167,7 +167,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index c1b3810..a37a077 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -74,10 +74,10 @@
 {
     int server_port;            /* port on which the ssl service runs       */
     int debug_level;            /* level of debugging                       */
-    char *ca_file;              /* the file with the CA certificate(s)      */
-    char *ca_path;              /* the path with the CA certificate(s) reside */
-    char *crt_file;             /* the file with the client certificate     */
-    char *key_file;             /* the file with the client key             */
+    const char *ca_file;        /* the file with the CA certificate(s)      */
+    const char *ca_path;        /* the path with the CA certificate(s) reside */
+    const char *crt_file;       /* the file with the client certificate     */
+    const char *key_file;       /* the file with the client key             */
     int force_ciphersuite[2];   /* protocol/ciphersuite to use, or all      */
     int renegotiation;          /* enable / disable renegotiation           */
     int allow_legacy;           /* allow legacy renegotiation               */
@@ -236,7 +236,7 @@
     int listen_fd;
     int client_fd = -1;
     unsigned char buf[1024];
-    char *pers = "ssl_server2";
+    const char *pers = "ssl_server2";
 
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -380,7 +380,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned -0x%x\n", -ret );
         goto exit;
@@ -402,7 +403,7 @@
     else 
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_crt( &cacert, (unsigned char *) test_ca_crt,
+        ret = x509parse_crt( &cacert, (const unsigned char *) test_ca_crt,
                 strlen( test_ca_crt ) );
 #else
     {
@@ -430,7 +431,7 @@
     else 
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_crt( &srvcert, (unsigned char *) test_srv_crt,
+        ret = x509parse_crt( &srvcert, (const unsigned char *) test_srv_crt,
                 strlen( test_srv_crt ) );
 #else
     {
@@ -450,7 +451,7 @@
     else
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_key( &rsa, (unsigned char *) test_srv_key,
+        ret = x509parse_key( &rsa, (const unsigned char *) test_srv_key,
                 strlen( test_srv_key ), NULL, 0 );
 #else
     {
diff --git a/programs/test/o_p_test.c b/programs/test/o_p_test.c
index 187372a..3531d54 100644
--- a/programs/test/o_p_test.c
+++ b/programs/test/o_p_test.c
@@ -63,11 +63,12 @@
     unsigned char o_priv_encrypted[512];
     unsigned char p_priv_decrypted[512];
     unsigned char o_priv_decrypted[512];
-    char *pers = "o_p_test_example";
+    const char *pers = "o_p_test_example";
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                    (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                    (const unsigned char *) pers,
+                    strlen( pers ) ) ) != 0 )
     {
         printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
diff --git a/programs/test/ssl_cert_test.c b/programs/test/ssl_cert_test.c
index 57ea32c..83a2a01 100644
--- a/programs/test/ssl_cert_test.c
+++ b/programs/test/ssl_cert_test.c
@@ -41,7 +41,7 @@
 
 #define MAX_CLIENT_CERTS    8
 
-char *client_certificates[MAX_CLIENT_CERTS] =
+const char *client_certificates[MAX_CLIENT_CERTS] =
 {
     "client1.crt",
     "client2.crt",
@@ -53,7 +53,7 @@
     "cert_sha512.crt"
 };
 
-char *client_private_keys[MAX_CLIENT_CERTS] =
+const char *client_private_keys[MAX_CLIENT_CERTS] =
 {
     "client1.key",
     "client2.key",
diff --git a/programs/test/ssl_test.c b/programs/test/ssl_test.c
index 802fda0..f011a2c 100644
--- a/programs/test/ssl_test.c
+++ b/programs/test/ssl_test.c
@@ -68,8 +68,8 @@
 /*
  * server-specific data
  */
-char *dhm_G = "4";
-char *dhm_P = 
+const char *dhm_G = "4";
+const char *dhm_P = 
 "E4004C1F94182000103D883A448B3F802CE4B44A83301270002C20D0321CFD00" \
 "11CCEF784C26A400F43DFB901BCA7538F2C6B176001CF5A0FD16D2C48B1D0C1C" \
 "F6AC8E1DA6BCC3B4E1F96B0564965300FFA1D0B601EB2800F489AA512C4B248C" \
@@ -84,7 +84,7 @@
 {
     int opmode;                 /* operation mode (client or server)    */
     int iomode;                 /* I/O mode (blocking or non-blocking)  */
-    char *server_name;          /* hostname of the server (client only) */
+    const char *server_name;    /* hostname of the server (client only) */
     int server_port;            /* port on which the ssl service runs   */
     int command;                /* what to do: read or write operation  */
     int buffer_size;            /* size of the send/receive buffer      */
@@ -161,7 +161,7 @@
     unsigned char *read_buf = NULL;
     unsigned char *write_buf = NULL;
 
-    char *pers = "ssl_test";
+    const char *pers = "ssl_test";
 
     struct hr_time t;
     entropy_context entropy;
@@ -174,7 +174,8 @@
 
     entropy_init( &entropy );
     if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 )
     {
         printf( "  ! ctr_drbg_init returned %d\n", ret );
         goto exit;
@@ -212,7 +213,7 @@
         printf("POLARSSL_CERTS_C not defined.\n");
         goto exit;
 #else
-        ret =  x509parse_crt( &srvcert, (unsigned char *) test_srv_crt,
+        ret =  x509parse_crt( &srvcert, (const unsigned char *) test_srv_crt,
                               strlen( test_srv_crt ) );
         if( ret != 0 )
         {
@@ -220,7 +221,7 @@
             goto exit;
         }
 
-        ret =  x509parse_crt( &srvcert, (unsigned char *) test_ca_crt,
+        ret =  x509parse_crt( &srvcert, (const unsigned char *) test_ca_crt,
                               strlen( test_ca_crt ) );
         if( ret != 0 )
         {
@@ -228,7 +229,7 @@
             goto exit;
         }
 
-        ret =  x509parse_key( &rsa, (unsigned char *) test_srv_key,
+        ret =  x509parse_key( &rsa, (const unsigned char *) test_srv_key,
                               strlen( test_srv_key ), NULL, 0 );
         if( ret != 0 )
         {
diff --git a/programs/x509/cert_app.c b/programs/x509/cert_app.c
index 2fb0c85..00a9316 100644
--- a/programs/x509/cert_app.c
+++ b/programs/x509/cert_app.c
@@ -56,8 +56,8 @@
 struct options
 {
     int mode;                   /* the mode to run the application in   */
-    char *filename;             /* filename of the certificate file     */
-    char *server_name;          /* hostname of the server (client only) */
+    const char *filename;       /* filename of the certificate file     */
+    const char *server_name;    /* hostname of the server (client only) */
     int server_port;            /* port on which the ssl service runs   */
     int debug_level;            /* level of debugging                   */
     int permissive;             /* permissive parsing                   */
@@ -112,7 +112,7 @@
     rsa_context rsa;
     int i, j, n;
     char *p, *q;
-    char *pers = "cert_app";
+    const char *pers = "cert_app";
 
     /*
      * Set to sane values
@@ -247,7 +247,8 @@
 
         entropy_init( &entropy );
         if( ( ret = ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                               (unsigned char *) pers, strlen( pers ) ) ) != 0 )
+                                   (const unsigned char *) pers,
+                                   strlen( pers ) ) ) != 0 )
         {
             printf( " failed\n  ! ctr_drbg_init returned %d\n", ret );
             goto exit;
diff --git a/programs/x509/crl_app.c b/programs/x509/crl_app.c
index 38ac3c6..fb191a1 100644
--- a/programs/x509/crl_app.c
+++ b/programs/x509/crl_app.c
@@ -43,7 +43,7 @@
  */
 struct options
 {
-    char *filename;             /* filename of the certificate file     */
+    const char *filename;       /* filename of the certificate file     */
     int debug_level;            /* level of debugging                   */
 } opt;
 
diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function
index 6c9c434..6143db1 100644
--- a/tests/suites/test_suite_rsa.function
+++ b/tests/suites/test_suite_rsa.function
@@ -542,11 +542,11 @@
     rsa_context ctx;
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
-    char *pers = "test_suite_rsa";
+    const char *pers = "test_suite_rsa";
 
     entropy_init( &entropy );
     TEST_ASSERT( ctr_drbg_init( &ctr_drbg, entropy_func, &entropy,
-                                (unsigned char *) pers, strlen( pers ) ) == 0 );
+                                (const unsigned char *) pers, strlen( pers ) ) == 0 );
 
     rsa_init( &ctx, 0, 0 );