diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index a78254c..2c8aa37 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -209,7 +209,7 @@
 {
     unsigned char *p = buf;
     size_t sig_alg_len = 0;
-    const int *md;
+    const int *md = mbedtls_ssl_conf_get_sig_algs( ssl->conf );
 
 #if defined(MBEDTLS_RSA_C) || defined(MBEDTLS_ECDSA_C)
     unsigned char *sig_alg_list = buf + 6;
@@ -223,10 +223,10 @@
     MBEDTLS_SSL_DEBUG_MSG( 3,
         ( "client hello, adding signature_algorithms extension" ) );
 
-    if( ssl->conf->sig_hashes == NULL )
+    if( md == NULL )
         return( MBEDTLS_ERR_SSL_BAD_CONFIG );
 
-    for( md = ssl->conf->sig_hashes; *md != MBEDTLS_MD_NONE; md++ )
+    for( ; *md != MBEDTLS_MD_NONE; md++ )
     {
 #if defined(MBEDTLS_ECDSA_C)
         sig_alg_len += 2;
@@ -253,7 +253,8 @@
      */
     sig_alg_len = 0;
 
-    for( md = ssl->conf->sig_hashes; *md != MBEDTLS_MD_NONE; md++ )
+    for( md = mbedtls_ssl_conf_get_sig_algs( ssl->conf );
+         *md != MBEDTLS_MD_NONE; md++ )
     {
 #if defined(MBEDTLS_ECDSA_C)
         sig_alg_list[sig_alg_len++] = mbedtls_ssl_hash_from_md_alg( *md );
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index a137e43..9eaeab4 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2798,7 +2798,8 @@
         /*
          * Supported signature algorithms
          */
-        for( cur = ssl->conf->sig_hashes; *cur != MBEDTLS_MD_NONE; cur++ )
+        for( cur = mbedtls_ssl_conf_get_sig_algs( ssl->conf );
+             *cur != MBEDTLS_MD_NONE; cur++ )
         {
             unsigned char hash = mbedtls_ssl_hash_from_md_alg( *cur );
 
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 40d21b5..d6b3baa 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -6858,12 +6858,12 @@
 int mbedtls_ssl_check_sig_hash( const mbedtls_ssl_context *ssl,
                                 mbedtls_md_type_t md )
 {
-    const int *cur;
+    const int *cur = mbedtls_ssl_conf_get_sig_algs( ssl->conf );
 
-    if( ssl->conf->sig_hashes == NULL )
+    if( cur == NULL )
         return( -1 );
 
-    for( cur = ssl->conf->sig_hashes; *cur != MBEDTLS_MD_NONE; cur++ )
+    for( ; *cur != MBEDTLS_MD_NONE; cur++ )
         if( *cur == (int) md )
             return( 0 );
 
