@@ -242,35 +242,61 @@ impl Client {
242242 // Get kind
243243 let kind = data[ 0 ] ;
244244 let Some ( kind) = Kind :: from_u8 ( kind) else {
245- let _ = sender. unbounded_send ( Err ( Error :: InvalidData ) ) ;
245+ let _ = sender. unbounded_send ( Err ( Error :: UnexpectedResponse ) ) ;
246246 return ;
247247 } ;
248248 let data = & data[ 1 ..] ;
249249
250250 // Deserialize the message
251251 match kind {
252252 Kind :: Seed => {
253- if let Some ( seed) = Seed :: deserialize ( Some ( & public) , data) {
254- let _ = sender. unbounded_send ( Ok ( Message :: Seed ( seed) ) ) ;
255- } else {
256- let _ = sender. unbounded_send ( Err ( Error :: InvalidData ) ) ;
253+ let result = Seed :: decode ( data) ;
254+ match result {
255+ Ok ( seed) => {
256+ if !seed. verify ( NAMESPACE , public. as_ref ( ) ) {
257+ let _ =
258+ sender. unbounded_send ( Err ( Error :: InvalidSignature ) ) ;
259+ return ;
260+ }
261+ let _ = sender. unbounded_send ( Ok ( Message :: Seed ( seed) ) ) ;
262+ }
263+ Err ( e) => {
264+ let _ = sender. unbounded_send ( Err ( Error :: InvalidData ( e) ) ) ;
265+ }
257266 }
258267 }
259268 Kind :: Notarization => {
260- if let Some ( payload) = Notarized :: deserialize ( Some ( & public) , data) {
261- let _ =
262- sender. unbounded_send ( Ok ( Message :: Notarization ( payload) ) ) ;
263- } else {
264- let _ = sender. unbounded_send ( Err ( Error :: InvalidData ) ) ;
269+ let result = Notarized :: decode ( data) ;
270+ match result {
271+ Ok ( notarized) => {
272+ if !notarized. verify ( public. as_ref ( ) ) {
273+ let _ =
274+ sender. unbounded_send ( Err ( Error :: InvalidSignature ) ) ;
275+ return ;
276+ }
277+ let _ = sender
278+ . unbounded_send ( Ok ( Message :: Notarization ( notarized) ) ) ;
279+ }
280+ Err ( e) => {
281+ let _ = sender. unbounded_send ( Err ( Error :: InvalidData ( e) ) ) ;
282+ }
265283 }
266284 }
267- Kind :: Nullification => { } // Ignore nullifications
268285 Kind :: Finalization => {
269- if let Some ( payload) = Finalized :: deserialize ( Some ( & public) , data) {
270- let _ =
271- sender. unbounded_send ( Ok ( Message :: Finalization ( payload) ) ) ;
272- } else {
273- let _ = sender. unbounded_send ( Err ( Error :: InvalidData ) ) ;
286+ let result = Finalized :: decode ( data) ;
287+ match result {
288+ Ok ( finalized) => {
289+ if !finalized. verify ( public. as_ref ( ) ) {
290+ let _ =
291+ sender. unbounded_send ( Err ( Error :: InvalidSignature ) ) ;
292+ return ;
293+ }
294+ let _ = sender
295+ . unbounded_send ( Ok ( Message :: Finalization ( finalized) ) ) ;
296+ }
297+ Err ( e) => {
298+ let _ = sender. unbounded_send ( Err ( Error :: InvalidData ( e) ) ) ;
299+ }
274300 }
275301 }
276302 }
0 commit comments