@@ -35,7 +35,6 @@ use libp2p_core::{
3535} ;
3636use libp2p_noise:: { Keypair , NoiseConfig , X25519Spec } ;
3737use log:: { debug, trace} ;
38- use multihash:: Multihash ;
3938use tokio_crate:: net:: UdpSocket ;
4039use webrtc:: ice:: udp_mux:: UDPMux ;
4140use webrtc:: peer_connection:: certificate:: RTCCertificate ;
@@ -162,7 +161,7 @@ impl Transport for WebRTCTransport {
162161 trace ! ( "dialing addr={}" , remote) ;
163162
164163 let config = self . config . clone ( ) ;
165- let our_fingerprint = self . config . fingerprint_of_first_certificate ( ) ;
164+ let client_fingerprint = self . config . fingerprint_of_first_certificate ( ) ;
166165 let id_keys = self . id_keys . clone ( ) ;
167166
168167 let first_listener = self
@@ -175,14 +174,14 @@ impl Transport for WebRTCTransport {
175174 // [`Transport::dial`] should do no work unless the returned [`Future`] is polled. Thus
176175 // do the `set_remote_description` call within the [`Future`].
177176 Ok ( async move {
178- let remote_fingerprint = fingerprint_from_addr ( & addr)
177+ let server_fingerprint = fingerprint_from_addr ( & addr)
179178 . ok_or_else ( || Error :: InvalidMultiaddr ( addr. clone ( ) ) ) ?;
180179
181180 let conn = WebRTCConnection :: connect (
182181 sock_addr,
183182 config. into_inner ( ) ,
184183 udp_mux,
185- & remote_fingerprint ,
184+ & server_fingerprint ,
186185 )
187186 . await ?;
188187
@@ -193,8 +192,8 @@ impl Transport for WebRTCTransport {
193192 let peer_id = perform_noise_handshake_outbound (
194193 id_keys,
195194 PollDataChannel :: new ( data_channel. clone ( ) ) ,
196- our_fingerprint ,
197- remote_fingerprint ,
195+ client_fingerprint ,
196+ server_fingerprint ,
198197 )
199198 . await ?;
200199
@@ -500,17 +499,17 @@ fn multiaddr_to_socketaddr(addr: &Multiaddr) -> Option<SocketAddr> {
500499async fn perform_noise_handshake_outbound < T > (
501500 id_keys : identity:: Keypair ,
502501 poll_data_channel : T ,
503- our_fingerprint : Fingerprint ,
504- remote_fingerprint : Fingerprint ,
502+ client_fingerprint : Fingerprint ,
503+ server_fingerprint : Fingerprint ,
505504) -> Result < PeerId , Error >
506505where
507506 T : AsyncRead + AsyncWrite + Unpin + Send + ' static ,
508507{
509508 let dh_keys = Keypair :: < X25519Spec > :: new ( )
510509 . into_authentic ( & id_keys)
511510 . unwrap ( ) ;
512- let noise =
513- NoiseConfig :: xx ( dh_keys ) . with_prologue ( noise_prologue ( our_fingerprint , remote_fingerprint ) ) ;
511+ let noise = NoiseConfig :: xx ( dh_keys )
512+ . with_prologue ( noise_prologue ( client_fingerprint , server_fingerprint ) ) ;
514513 let info = noise. protocol_info ( ) . next ( ) . unwrap ( ) ;
515514 let ( peer_id, _noise_io) = noise
516515 . into_authenticated ( )
@@ -529,13 +528,13 @@ async fn upgrade(
529528) -> Result < ( PeerId , Connection ) , Error > {
530529 trace ! ( "upgrading addr={} (ufrag={})" , socket_addr, ufrag) ;
531530
532- let our_fingerprint = config. fingerprint_of_first_certificate ( ) ;
531+ let server_fingerprint = config. fingerprint_of_first_certificate ( ) ;
533532
534533 let conn = WebRTCConnection :: accept (
535534 socket_addr,
536535 config. into_inner ( ) ,
537536 udp_mux,
538- & our_fingerprint ,
537+ & server_fingerprint ,
539538 & ufrag,
540539 )
541540 . await ?;
@@ -548,12 +547,13 @@ async fn upgrade(
548547 socket_addr,
549548 ufrag
550549 ) ;
551- let remote_fingerprint = conn. get_remote_fingerprint ( ) . await ;
550+ let client_fingerprint = conn. get_remote_fingerprint ( ) . await ;
551+
552552 let peer_id = perform_noise_handshake_inbound (
553553 id_keys,
554554 PollDataChannel :: new ( data_channel. clone ( ) ) ,
555- our_fingerprint ,
556- remote_fingerprint ,
555+ client_fingerprint ,
556+ server_fingerprint ,
557557 )
558558 . await ?;
559559
@@ -574,17 +574,17 @@ async fn upgrade(
574574async fn perform_noise_handshake_inbound < T > (
575575 id_keys : identity:: Keypair ,
576576 poll_data_channel : T ,
577- our_fingerprint : Fingerprint ,
578- remote_fingerprint : Fingerprint ,
577+ client_fingerprint : Fingerprint ,
578+ server_fingerprint : Fingerprint ,
579579) -> Result < PeerId , Error >
580580where
581581 T : AsyncRead + AsyncWrite + Unpin + Send + ' static ,
582582{
583583 let dh_keys = Keypair :: < X25519Spec > :: new ( )
584584 . into_authentic ( & id_keys)
585585 . unwrap ( ) ;
586- let noise =
587- NoiseConfig :: xx ( dh_keys ) . with_prologue ( noise_prologue ( our_fingerprint , remote_fingerprint ) ) ;
586+ let noise = NoiseConfig :: xx ( dh_keys )
587+ . with_prologue ( noise_prologue ( client_fingerprint , server_fingerprint ) ) ;
588588 let info = noise. protocol_info ( ) . next ( ) . unwrap ( ) ;
589589 let ( peer_id, _noise_io) = noise
590590 . into_authenticated ( )
@@ -593,18 +593,17 @@ where
593593 Ok ( peer_id)
594594}
595595
596- fn noise_prologue ( our_fingerprint : Fingerprint , remote_fingerprint : Fingerprint ) -> Vec < u8 > {
597- let ( a, b) : ( Multihash , Multihash ) = (
598- our_fingerprint. to_multi_hash ( ) ,
599- remote_fingerprint. to_multi_hash ( ) ,
600- ) ;
601- let ( a, b) = ( a. to_bytes ( ) , b. to_bytes ( ) ) ;
602- let ( first, second) = if a < b { ( a, b) } else { ( b, a) } ;
596+ fn noise_prologue ( client : Fingerprint , server : Fingerprint ) -> Vec < u8 > {
597+ let server = server. to_multi_hash ( ) . to_bytes ( ) ;
598+ let client = client. to_multi_hash ( ) . to_bytes ( ) ;
599+
603600 const PREFIX : & [ u8 ] = b"libp2p-webrtc-noise:" ;
604- let mut out = Vec :: with_capacity ( PREFIX . len ( ) + first. len ( ) + second. len ( ) ) ;
601+
602+ let mut out = Vec :: with_capacity ( PREFIX . len ( ) + server. len ( ) + client. len ( ) ) ;
605603 out. extend_from_slice ( PREFIX ) ;
606- out. extend_from_slice ( & first) ;
607- out. extend_from_slice ( & second) ;
604+ out. extend_from_slice ( & server) ;
605+ out. extend_from_slice ( & client) ;
606+
608607 out
609608}
610609
@@ -633,10 +632,7 @@ mod tests {
633632 let prologue2 = noise_prologue ( b, a) ;
634633
635634 assert_eq ! ( hex:: encode( & prologue1) , "6c69627032702d7765627274632d6e6f6973653a122030fc9f469c207419dfdd0aab5f27a86c973c94e40548db9375cca2e915973b9912203e79af40d6059617a0d83b83a52ce73b0c1f37a72c6043ad2969e2351bdca870" ) ;
636- assert_eq ! (
637- prologue1, prologue2,
638- "order of fingerprints does not matter"
639- ) ;
635+ assert_eq ! ( hex:: encode( & prologue2) , "6c69627032702d7765627274632d6e6f6973653a12203e79af40d6059617a0d83b83a52ce73b0c1f37a72c6043ad2969e2351bdca870122030fc9f469c207419dfdd0aab5f27a86c973c94e40548db9375cca2e915973b99" ) ;
640636 }
641637
642638 #[ test]
0 commit comments