@@ -1043,14 +1043,19 @@ public void handshake_p256IsSupportedByDefault() throws Exception {
10431043 s .get ();
10441044 c .get ();
10451045 // By default, BoringSSL uses X25519, P-256, and P-384.
1046+ // On newer versions of BoringSSL, X25519MLKEM768 is also a default.
10461047 if (sslParametersSupportsNamedGroups ()) {
10471048 // If the client requests P-256, it will be chosen.
10481049 assertEquals ("P-256" , getCurveName (client ));
10491050 assertEquals ("P-256" , getCurveName (server ));
10501051 } else {
1051- // Otherwise, X25519 gets priority.
1052- assertEquals ("X25519" , getCurveName (client ));
1053- assertEquals ("X25519" , getCurveName (server ));
1052+ // Otherwise, X25519 or X25519MLKEM768 gets priority.
1053+ String clientCurve = getCurveName (client );
1054+ String serverCurve = getCurveName (server );
1055+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + clientCurve ,
1056+ clientCurve .equals ("X25519" ) || clientCurve .equals ("X25519MLKEM768" ));
1057+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + serverCurve ,
1058+ serverCurve .equals ("X25519" ) || serverCurve .equals ("X25519MLKEM768" ));
10541059 }
10551060 client .close ();
10561061 server .close ();
@@ -1078,14 +1083,19 @@ public void handshake_p384IsSupportedByDefault() throws Exception {
10781083 s .get ();
10791084 c .get ();
10801085 // By default, BoringSSL uses X25519, P-256, and P-384.
1086+ // On newer versions of BoringSSL, X25519MLKEM768 is also a default.
10811087 if (sslParametersSupportsNamedGroups ()) {
10821088 // If the client requests P-384, it will be chosen.
10831089 assertEquals ("P-384" , getCurveName (client ));
10841090 assertEquals ("P-384" , getCurveName (server ));
10851091 } else {
1086- // Otherwise, X25519 gets priority.
1087- assertEquals ("X25519" , getCurveName (client ));
1088- assertEquals ("X25519" , getCurveName (server ));
1092+ // Otherwise, X25519 or X25519MLKEM768 gets priority.
1093+ String clientCurve = getCurveName (client );
1094+ String serverCurve = getCurveName (server );
1095+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + clientCurve ,
1096+ clientCurve .equals ("X25519" ) || clientCurve .equals ("X25519MLKEM768" ));
1097+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + serverCurve ,
1098+ serverCurve .equals ("X25519" ) || serverCurve .equals ("X25519MLKEM768" ));
10891099 }
10901100 client .close ();
10911101 server .close ();
@@ -1120,9 +1130,13 @@ public void handshake_setsNamedGroups_usesFirstServerNamedGroupThatClientSupport
11201130 assertEquals ("P-384" , getCurveName (client ));
11211131 assertEquals ("P-384" , getCurveName (server ));
11221132 } else {
1123- // The defaults are used, and X25519 gets priority.
1124- assertEquals ("X25519" , getCurveName (client ));
1125- assertEquals ("X25519" , getCurveName (server ));
1133+ // The defaults are used, and X25519 or X25519MLKEM768 gets priority.
1134+ String clientCurve = getCurveName (client );
1135+ String serverCurve = getCurveName (server );
1136+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + clientCurve ,
1137+ clientCurve .equals ("X25519" ) || clientCurve .equals ("X25519MLKEM768" ));
1138+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + serverCurve ,
1139+ serverCurve .equals ("X25519" ) || serverCurve .equals ("X25519MLKEM768" ));
11261140 }
11271141 client .close ();
11281142 server .close ();
@@ -1179,9 +1193,13 @@ public void handshake_setsNamedGroupsBeforeAccept_usesFirstServerNamedGroupThatC
11791193 assertEquals ("P-384" , getCurveName (client ));
11801194 assertEquals ("P-384" , getCurveName (server ));
11811195 } else {
1182- // The defaults are used, and X25519 gets priority.
1183- assertEquals ("X25519" , getCurveName (client ));
1184- assertEquals ("X25519" , getCurveName (server ));
1196+ // The defaults are used, X25519 or X25519MLKEM768 gets priority.
1197+ String clientCurve = getCurveName (client );
1198+ String serverCurve = getCurveName (server );
1199+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + clientCurve ,
1200+ clientCurve .equals ("X25519" ) || clientCurve .equals ("X25519MLKEM768" ));
1201+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + serverCurve ,
1202+ serverCurve .equals ("X25519" ) || serverCurve .equals ("X25519MLKEM768" ));
11851203 }
11861204 client .close ();
11871205 server .close ();
@@ -1214,9 +1232,13 @@ public void handshake_withX25519MLKEM768_works() throws Exception {
12141232 assertEquals ("X25519MLKEM768" , getCurveName (client ));
12151233 assertEquals ("X25519MLKEM768" , getCurveName (server ));
12161234 } else {
1217- // The defaults are used, and X25519 gets priority.
1218- assertEquals ("X25519" , getCurveName (client ));
1219- assertEquals ("X25519" , getCurveName (server ));
1235+ // The defaults are used, and X25519 or X25519MLKEM768 gets priority.
1236+ String clientCurve = getCurveName (client );
1237+ String serverCurve = getCurveName (server );
1238+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + clientCurve ,
1239+ clientCurve .equals ("X25519" ) || clientCurve .equals ("X25519MLKEM768" ));
1240+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + serverCurve ,
1241+ serverCurve .equals ("X25519" ) || serverCurve .equals ("X25519MLKEM768" ));
12201242 }
12211243 client .close ();
12221244 server .close ();
@@ -1309,9 +1331,13 @@ public void handshake_namedGroupsDontIntersect_throwsException() throws Exceptio
13091331 } else {
13101332 s .get ();
13111333 c .get ();
1312- // The defaults are used, and X25519 gets priority.
1313- assertEquals ("X25519" , getCurveName (client ));
1314- assertEquals ("X25519" , getCurveName (server ));
1334+ // The defaults are used, and X25519 or X25519MLKEM768 gets priority.
1335+ String clientCurve = getCurveName (client );
1336+ String serverCurve = getCurveName (server );
1337+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + clientCurve ,
1338+ clientCurve .equals ("X25519" ) || clientCurve .equals ("X25519MLKEM768" ));
1339+ assertTrue ("Curve is not X25519 or X25519MLKEM768: " + serverCurve ,
1340+ serverCurve .equals ("X25519" ) || serverCurve .equals ("X25519MLKEM768" ));
13151341 }
13161342 client .close ();
13171343 server .close ();
0 commit comments