Change mbedtls_x509_subject_alternative_name

Make `mbedtls_x509_subject_alternative_name` to be a single item
rather than a list. Adapt the subject alternative name parsing function,
to receive a signle `mbedtls_x509_buf` item from the subject_alt_names
sequence of the certificate.
diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function
index beec52c..b4e9802 100644
--- a/tests/suites/test_suite_x509parse.function
+++ b/tests/suites/test_suite_x509parse.function
@@ -303,8 +303,10 @@
 /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C */
 void x509_parse_san( char * crt_file, char * result_str )
 {
+    int ret;
     mbedtls_x509_crt   crt;
-    mbedtls_x509_subject_alternative_name *cur, *next, *san = NULL;
+    mbedtls_x509_subject_alternative_name san;
+    mbedtls_x509_sequence *cur = NULL;
     char buf[2000];
     char *p = buf;
     size_t n = sizeof( buf );
@@ -313,24 +315,27 @@
     memset( buf, 0, 2000 );
 
     TEST_ASSERT( mbedtls_x509_crt_parse_file( &crt, crt_file ) == 0 );
-    TEST_ASSERT( mbedtls_x509_parse_subject_alternative_name( &crt, &san ) == 0 );
-    cur = san;
-    while( cur != NULL )
+
+    if( crt.ext_types & MBEDTLS_X509_EXT_SUBJECT_ALT_NAME )
     {
-        TEST_ASSERT( verify_parse_san( cur, &p, &n ) == 0 );
-        cur = cur->next;
+        cur = &crt.subject_alt_names;
+        while( cur != NULL )
+        {
+            ret = mbedtls_x509_parse_subject_alt_name( &cur->buf, &san );
+            TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE );
+            /*
+             * If san type not supported, ignore.
+             */
+            if( ret == 0)
+                TEST_ASSERT( verify_parse_san( &san, &p, &n ) == 0 );
+            cur = cur->next;
+        }
     }
 
     TEST_ASSERT( strcmp( buf, result_str ) == 0 );
 
 exit:
 
-    for( cur = san; cur != NULL; cur = next )
-    {
-        next = cur->next;
-        mbedtls_free( cur );
-    }
-
     mbedtls_x509_crt_free( &crt );
 }
 /* END_CASE */