@@ -401,7 +401,7 @@ tls_ctx_set_tls_groups(struct tls_root_ctx *ctx, const char *groups)
401
401
402
402
/* Get number of groups and allocate an array in ctx */
403
403
int groups_count = get_num_elements (groups , ':' );
404
- ALLOC_ARRAY_CLEAR (ctx -> groups , mbedtls_ecp_group_id , groups_count + 1 )
404
+ ALLOC_ARRAY_CLEAR (ctx -> groups , mbedtls_compat_group_id , groups_count + 1 )
405
405
406
406
/* Parse allowed ciphers, getting IDs */
407
407
int i = 0 ;
@@ -418,11 +418,15 @@ tls_ctx_set_tls_groups(struct tls_root_ctx *ctx, const char *groups)
418
418
}
419
419
else
420
420
{
421
- ctx -> groups [i ] = ci -> grp_id ;
421
+ ctx -> groups [i ] = mbedtls_compat_get_group_id ( ci ) ;
422
422
i ++ ;
423
423
}
424
424
}
425
- ctx -> groups [i ] = MBEDTLS_ECP_DP_NONE ;
425
+
426
+ /* Recent mbedtls versions state that the list of groups must be terminated
427
+ * with 0. Older versions state that it must be terminated with MBEDTLS_ECP_DP_NONE
428
+ * which is also 0, so this works either way. */
429
+ ctx -> groups [i ] = 0 ;
426
430
427
431
gc_free (& gc );
428
432
}
@@ -1049,47 +1053,40 @@ tls_version_max(void)
1049
1053
}
1050
1054
1051
1055
/**
1052
- * Convert an OpenVPN tls-version variable to mbed TLS format (i.e. a major and
1053
- * minor ssl version number).
1056
+ * Convert an OpenVPN tls-version variable to mbed TLS format
1054
1057
*
1055
1058
* @param tls_ver The tls-version variable to convert.
1056
- * @param major Returns the TLS major version in mbed TLS format.
1057
- * Must be a valid pointer.
1058
- * @param minor Returns the TLS minor version in mbed TLS format.
1059
- * Must be a valid pointer.
1059
+ *
1060
+ * @return Translated mbedTLS SSL version from OpenVPN TLS version.
1060
1061
*/
1061
- static void
1062
- tls_version_to_major_minor (int tls_ver , int * major , int * minor )
1062
+ static mbedtls_ssl_protocol_version
1063
+ tls_version_to_ssl_version (int tls_ver )
1063
1064
{
1064
- ASSERT (major );
1065
- ASSERT (minor );
1066
-
1067
1065
switch (tls_ver )
1068
1066
{
1069
1067
#if defined(MBEDTLS_SSL_PROTO_TLS1 )
1070
1068
case TLS_VER_1_0 :
1071
- * major = MBEDTLS_SSL_MAJOR_VERSION_3 ;
1072
- * minor = MBEDTLS_SSL_MINOR_VERSION_1 ;
1073
- break ;
1069
+ return MBEDTLS_SSL_VERSION_TLS1_0 ;
1074
1070
#endif
1075
1071
1076
1072
#if defined(MBEDTLS_SSL_PROTO_TLS1_1 )
1077
1073
case TLS_VER_1_1 :
1078
- * major = MBEDTLS_SSL_MAJOR_VERSION_3 ;
1079
- * minor = MBEDTLS_SSL_MINOR_VERSION_2 ;
1080
- break ;
1074
+ return MBEDTLS_SSL_VERSION_TLS1_1 ;
1081
1075
#endif
1082
1076
1083
1077
#if defined(MBEDTLS_SSL_PROTO_TLS1_2 )
1084
1078
case TLS_VER_1_2 :
1085
- * major = MBEDTLS_SSL_MAJOR_VERSION_3 ;
1086
- * minor = MBEDTLS_SSL_MINOR_VERSION_3 ;
1087
- break ;
1079
+ return MBEDTLS_SSL_VERSION_TLS1_2 ;
1080
+ #endif
1081
+
1082
+ #if defined(MBEDTLS_SSL_PROTO_TLS1_3 )
1083
+ case TLS_VER_1_3 :
1084
+ return MBEDTLS_SSL_VERSION_TLS1_3 ;
1088
1085
#endif
1089
1086
1090
1087
default :
1091
1088
msg (M_FATAL , "%s: invalid or unsupported TLS version %d" , __func__ , tls_ver );
1092
- break ;
1089
+ return MBEDTLS_SSL_VERSION_UNKNOWN ;
1093
1090
}
1094
1091
}
1095
1092
@@ -1170,7 +1167,7 @@ key_state_ssl_init(struct key_state_ssl *ks_ssl,
1170
1167
1171
1168
if (ssl_ctx -> groups )
1172
1169
{
1173
- mbedtls_ssl_conf_curves (ks_ssl -> ssl_config , ssl_ctx -> groups );
1170
+ mbedtls_ssl_conf_groups (ks_ssl -> ssl_config , ssl_ctx -> groups );
1174
1171
}
1175
1172
1176
1173
/* Disable TLS renegotiations if the mbedtls library supports that feature.
@@ -1220,15 +1217,14 @@ key_state_ssl_init(struct key_state_ssl *ks_ssl,
1220
1217
& SSLF_TLS_VERSION_MIN_MASK ;
1221
1218
1222
1219
/* default to TLS 1.2 */
1223
- int major = MBEDTLS_SSL_MAJOR_VERSION_3 ;
1224
- int minor = MBEDTLS_SSL_MINOR_VERSION_3 ;
1220
+ mbedtls_ssl_protocol_version version = MBEDTLS_SSL_VERSION_TLS1_2 ;
1225
1221
1226
1222
if (configured_tls_version_min > TLS_VER_UNSPEC )
1227
1223
{
1228
- tls_version_to_major_minor ( configured_tls_version_min , & major , & minor );
1224
+ version = tls_version_to_ssl_version ( configured_tls_version_min );
1229
1225
}
1230
1226
1231
- mbedtls_ssl_conf_min_version (ks_ssl -> ssl_config , major , minor );
1227
+ mbedtls_ssl_conf_min_tls_version (ks_ssl -> ssl_config , version );
1232
1228
}
1233
1229
1234
1230
/* Initialize maximum TLS version */
@@ -1237,20 +1233,19 @@ key_state_ssl_init(struct key_state_ssl *ks_ssl,
1237
1233
(session -> opt -> ssl_flags >> SSLF_TLS_VERSION_MAX_SHIFT )
1238
1234
& SSLF_TLS_VERSION_MAX_MASK ;
1239
1235
1240
- int major = 0 ;
1241
- int minor = 0 ;
1236
+ mbedtls_ssl_protocol_version version = MBEDTLS_SSL_VERSION_UNKNOWN ;
1242
1237
1243
1238
if (configured_tls_version_max > TLS_VER_UNSPEC )
1244
1239
{
1245
- tls_version_to_major_minor ( configured_tls_version_max , & major , & minor );
1240
+ version = tls_version_to_ssl_version ( configured_tls_version_max );
1246
1241
}
1247
1242
else
1248
1243
{
1249
1244
/* Default to tls_version_max(). */
1250
- tls_version_to_major_minor (tls_version_max (), & major , & minor );
1245
+ version = tls_version_to_ssl_version (tls_version_max ());
1251
1246
}
1252
1247
1253
- mbedtls_ssl_conf_max_version (ks_ssl -> ssl_config , major , minor );
1248
+ mbedtls_ssl_conf_max_tls_version (ks_ssl -> ssl_config , version );
1254
1249
}
1255
1250
1256
1251
#if HAVE_MBEDTLS_SSL_CONF_EXPORT_KEYS_EXT_CB
0 commit comments