diff --git a/library/ssl_tls13_server.c b/library/ssl_tls13_server.c
index acd536a..7117e7ec 100644
--- a/library/ssl_tls13_server.c
+++ b/library/ssl_tls13_server.c
@@ -760,40 +760,31 @@
 }
 
 /*
- * ssl_tls13_write_supported_versions_ext():
+ * ssl_tls13_write_selected_version_ext():
  *
  * struct {
  *      ProtocolVersion selected_version;
  * } SupportedVersions;
  */
-static int ssl_tls13_write_supported_versions_ext( mbedtls_ssl_context *ssl,
-                                                   unsigned char *buf,
-                                                   unsigned char *end,
-                                                   size_t *out_len )
+static int ssl_tls13_write_selected_version_ext( mbedtls_ssl_context *ssl,
+                                                 unsigned char *buf,
+                                                 unsigned char *end,
+                                                 size_t *out_len )
 {
-    unsigned char *p = buf;
-
     *out_len = 0;
 
-    MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, write supported versions extension" ) );
+    MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, write selected_version" ) );
 
     /* Check if we have space to write the extension:
      * - extension_type         (2 bytes)
      * - extension_data_length  (2 bytes)
-     * - versions_length        (1 byte )
-     * - versions               (2 bytes)
+     * - selected_version       (2 bytes)
      */
-    MBEDTLS_SSL_CHK_BUF_PTR( p, end, 7 );
+    MBEDTLS_SSL_CHK_BUF_PTR( buf, end, 6 );
 
-    /* Write extension_type */
-    MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SUPPORTED_VERSIONS, p, 0 );
+    MBEDTLS_PUT_UINT16_BE( MBEDTLS_TLS_EXT_SUPPORTED_VERSIONS, buf, 0 );
 
-    /* Write extension_data_length */
-    MBEDTLS_PUT_UINT16_BE( 3, p, 2 );
-    p += 4;
-
-    /* Length of versions */
-    *p++ = 0x2;
+    MBEDTLS_PUT_UINT16_BE( 2, buf, 2 );
 
     /* Write values of supported versions.
      *
@@ -801,12 +792,14 @@
      *
      * Currently, only one version is advertised.
      */
-    mbedtls_ssl_write_version( p, ssl->tls_version, ssl->conf->transport );
+    mbedtls_ssl_write_version( buf + 4,
+                               ssl->conf->transport,
+                               ssl->tls_version );
 
     MBEDTLS_SSL_DEBUG_MSG( 3, ( "supported version: [%04x]",
                                 ssl->tls_version ) );
 
-    *out_len = 7;
+    *out_len = 6;
 
     return( 0 );
 }
@@ -1007,10 +1000,10 @@
     p += 2;
 
     /* Add supported_version extension */
-    if( ( ret = ssl_tls13_write_supported_versions_ext(
+    if( ( ret = ssl_tls13_write_selected_version_ext(
                                             ssl, p, end, &output_len ) ) != 0 )
     {
-        MBEDTLS_SSL_DEBUG_RET( 1, "ssl_tls13_write_supported_versions_ext",
+        MBEDTLS_SSL_DEBUG_RET( 1, "ssl_tls13_write_selected_version_ext",
                                ret );
         return( ret );
     }
