11/*! CryptoHandshake packet
22*/
33
4- use nom:: { Err , Needed } ;
54use crate :: toxcore:: binary_io:: * ;
65use crate :: toxcore:: crypto_core:: * ;
76use crate :: toxcore:: dht:: packet:: cookie:: EncryptedCookie ;
@@ -91,17 +90,9 @@ impl CryptoHandshake {
9190 GetPayloadError :: decrypt ( )
9291 } ) ?;
9392 match CryptoHandshakePayload :: from_bytes ( & decrypted) {
94- Err ( Err :: Incomplete ( Needed :: Unknown ) ) => {
95- Err ( GetPayloadError :: incomplete ( Needed :: Unknown , self . payload . to_vec ( ) ) )
93+ Err ( error ) => {
94+ Err ( GetPayloadError :: deserialize ( error , decrypted . clone ( ) ) )
9695 } ,
97- Err ( Err :: Incomplete ( needed) ) => {
98- Err ( GetPayloadError :: incomplete ( needed, self . payload . to_vec ( ) ) )
99- } ,
100- Err ( Err :: Error ( error) ) => {
101- let ( _, kind) = error;
102- Err ( GetPayloadError :: deserialize ( kind, self . payload . to_vec ( ) ) )
103- } ,
104- Err ( Err :: Failure ( e) ) => panic ! ( "CryptoHandshakePayload deserialize failed with unrecoverable error: {:?}" , e) ,
10596 Ok ( ( _, payload) ) => {
10697 Ok ( payload)
10798 }
@@ -171,7 +162,7 @@ impl ToBytes for CryptoHandshakePayload {
171162#[ cfg( test) ]
172163mod tests {
173164 use super :: * ;
174- use nom:: Needed ;
165+ use nom:: { Needed , Err } ;
175166
176167 encode_decode_test ! (
177168 crypto_handshake_encode_decode,
@@ -250,8 +241,8 @@ mod tests {
250241 let dht_packet = CryptoHandshake :: new ( & shared_secret, & payload, cookie) ;
251242 // try to decode payload with eve's shared secret
252243 let decoded_payload = dht_packet. get_payload ( & eve_shared_secret) ;
253- assert ! ( decoded_payload. is_err ( ) ) ;
254- assert_eq ! ( * decoded_payload . err ( ) . unwrap ( ) . kind( ) , GetPayloadErrorKind :: Decrypt ) ;
244+ let error = decoded_payload. err ( ) . unwrap ( ) ;
245+ assert_eq ! ( * error . kind( ) , GetPayloadErrorKind :: Decrypt ) ;
255246 }
256247
257248 #[ test]
@@ -274,8 +265,11 @@ mod tests {
274265 payload : invalid_payload_encoded
275266 } ;
276267 let decoded_payload = invalid_packet. get_payload ( & shared_secret) ;
277- assert ! ( decoded_payload. is_err( ) ) ;
278- assert_eq ! ( * decoded_payload. err( ) . unwrap( ) . kind( ) , GetPayloadErrorKind :: IncompletePayload { needed: Needed :: Size ( 24 ) , payload: invalid_packet. payload } ) ;
268+ let error = decoded_payload. err ( ) . unwrap ( ) ;
269+ assert_eq ! ( * error. kind( ) , GetPayloadErrorKind :: Deserialize {
270+ error: Err :: Incomplete ( Needed :: Size ( 24 ) ) ,
271+ payload: invalid_payload. to_vec( )
272+ } ) ;
279273 // Try short incomplete array
280274 let invalid_payload = [ ] ;
281275 let invalid_payload_encoded = seal_precomputed ( & invalid_payload, & nonce, & shared_secret) ;
@@ -285,7 +279,10 @@ mod tests {
285279 payload : invalid_payload_encoded
286280 } ;
287281 let decoded_payload = invalid_packet. get_payload ( & shared_secret) ;
288- assert ! ( decoded_payload. is_err( ) ) ;
289- assert_eq ! ( * decoded_payload. err( ) . unwrap( ) . kind( ) , GetPayloadErrorKind :: IncompletePayload { needed: Needed :: Size ( 24 ) , payload: invalid_packet. payload } ) ;
282+ let error = decoded_payload. err ( ) . unwrap ( ) ;
283+ assert_eq ! ( * error. kind( ) , GetPayloadErrorKind :: Deserialize {
284+ error: Err :: Incomplete ( Needed :: Size ( 24 ) ) ,
285+ payload: invalid_payload. to_vec( )
286+ } ) ;
290287 }
291288}
0 commit comments