@@ -20,7 +20,7 @@ pub async fn get_streams() -> Result<(TcpStream, TcpStream), tokio::io::Error> {
2020}
2121
2222#[ test_log:: test( tokio:: test) ]
23- async fn s2n_client ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
23+ async fn s2n_mldsa_client ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
2424 let cert_path = format ! ( "{TEST_PEMS_PATH}mldsa/ML-DSA-87.crt" ) ;
2525 let key_path = format ! ( "{TEST_PEMS_PATH}mldsa/ML-DSA-87-seed.priv" ) ;
2626
@@ -63,7 +63,7 @@ async fn s2n_client() -> Result<(), Box<dyn std::error::Error>> {
6363}
6464
6565#[ test_log:: test( tokio:: test) ]
66- async fn s2n_server ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
66+ async fn s2n_mldsa_server ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
6767 let cert_path = format ! ( "{TEST_PEMS_PATH}mldsa/ML-DSA-87.crt" ) ;
6868 let key_path = format ! ( "{TEST_PEMS_PATH}mldsa/ML-DSA-87-seed.priv" ) ;
6969
@@ -99,3 +99,77 @@ async fn s2n_server() -> Result<(), Box<dyn std::error::Error>> {
9999 ) ;
100100 Ok ( ( ) )
101101}
102+
103+ #[ tokio:: test]
104+ async fn s2n_mlkem_client ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
105+ let cert_path = format ! ( "{TEST_PEMS_PATH}permutations/ec_ecdsa_p256_sha384/server-chain.pem" ) ;
106+ let key_path = format ! ( "{TEST_PEMS_PATH}permutations/ec_ecdsa_p256_sha384/server-key.pem" ) ;
107+
108+ let ( server_stream, client_stream) = get_streams ( ) . await ?;
109+
110+ // Setup Openssl 3.5 server restricted to SecP384r1MLKEM1024
111+ let mut server = {
112+ let mut builder = SslContextBuilder :: new ( SslMethod :: tls ( ) ) ?;
113+ builder. set_private_key_file ( key_path, SslFiletype :: PEM ) ?;
114+ builder. set_certificate_chain_file ( cert_path. clone ( ) ) ?;
115+ builder. set_groups_list ( "SecP384r1MLKEM1024" ) ?;
116+ let context = builder. build ( ) ;
117+ let ssl = Ssl :: new ( & context) ?;
118+ SslStream :: new ( ssl, server_stream) ?
119+ } ;
120+
121+ // Setup s2n-tls client with default_pq
122+ let client = {
123+ let mut config = Config :: builder ( ) ;
124+ config. set_security_policy ( & DEFAULT_PQ ) ?;
125+ config. trust_location ( Some ( Path :: new ( & cert_path) ) , None ) ?;
126+ TlsConnector :: new ( config. build ( ) ?)
127+ } ;
128+
129+ let server_pin = Pin :: new ( & mut server) ;
130+ let ( _, client_result) = tokio:: join!(
131+ server_pin. accept( ) ,
132+ client. connect( "localhost" , client_stream) ,
133+ ) ;
134+
135+ let client = client_result?;
136+ let conn = client. as_ref ( ) ;
137+ let kem_group = conn. kem_group_name ( ) . unwrap ( ) ;
138+ assert_eq ! ( kem_group, "SecP384r1MLKEM1024" ) ;
139+ Ok ( ( ) )
140+ }
141+
142+ #[ tokio:: test]
143+ async fn s2n_mlkem_server ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
144+ let cert_path = format ! ( "{TEST_PEMS_PATH}permutations/ec_ecdsa_p256_sha384/server-chain.pem" ) ;
145+ let key_path = format ! ( "{TEST_PEMS_PATH}permutations/ec_ecdsa_p256_sha384/server-key.pem" ) ;
146+ let ( server_stream, client_stream) = get_streams ( ) . await ?;
147+
148+ // Setup Openssl 3.5 client restricted to SecP384r1MLKEM1024
149+ let mut client = {
150+ let mut builder = SslContextBuilder :: new ( SslMethod :: tls ( ) ) ?;
151+ builder. set_ca_file ( Path :: new ( & cert_path) ) ?;
152+ builder. set_groups_list ( "SecP384r1MLKEM1024" ) ?;
153+ let context = builder. build ( ) ;
154+ let ssl = Ssl :: new ( & context) ?;
155+ SslStream :: new ( ssl, client_stream) ?
156+ } ;
157+
158+ let server = {
159+ let mut config = Config :: builder ( ) ;
160+ config. set_security_policy ( & DEFAULT_PQ ) ?;
161+ let cert = fs:: read ( & cert_path) ?;
162+ let key = fs:: read ( & key_path) ?;
163+ config. load_pem ( & cert, & key) ?;
164+ TlsAcceptor :: new ( config. build ( ) ?)
165+ } ;
166+
167+ let client_pin = Pin :: new ( & mut client) ;
168+ let ( server_result, _) = tokio:: join!( server. accept( server_stream) , client_pin. connect( ) , ) ;
169+
170+ let server = server_result?;
171+ let conn = server. as_ref ( ) ;
172+ let kem_group = conn. kem_group_name ( ) . unwrap ( ) ;
173+ assert_eq ! ( kem_group, "SecP384r1MLKEM1024" ) ;
174+ Ok ( ( ) )
175+ }
0 commit comments