@@ -24,7 +24,6 @@ use primitives::H512;
2424use rlp:: { Decodable , DecoderError , Encodable , RlpStream , UntrustedRlp } ;
2525use rustc_hex:: { FromHex , ToHex } ;
2626use secp256k1:: { key, schnorr, Error as SecpError , Message as SecpMessage } ;
27- use serde:: de:: Error as SerdeError ;
2827use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
2928
3029use super :: { public_to_address, Address , Error , Message , Private , Public , SECP256K1 } ;
@@ -153,38 +152,30 @@ impl Serialize for SchnorrSignature {
153152 fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
154153 where
155154 S : Serializer , {
156- serializer. serialize_str ( & self . 0 . to_hex ( ) )
155+ let data: H512 = self . 0 . into ( ) ;
156+ data. serialize ( serializer)
157157 }
158158}
159159
160160impl < ' a > Deserialize < ' a > for SchnorrSignature {
161161 fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error >
162162 where
163163 D : Deserializer < ' a > , {
164- let s = String :: deserialize ( deserializer) ?;
165- let data = s. from_hex ( ) . map_err ( |e| SerdeError :: custom ( format ! ( "Invalid signature {}" , e) ) ) ?;
166- if data. len ( ) != 64 {
167- return Err ( SerdeError :: custom ( format ! ( "Invalid signature" ) ) )
168- }
169- let bytes = {
170- let mut array = [ 0 ; 64 ] ;
171- array. copy_from_slice ( & data) ;
172- array
173- } ;
174- Ok ( SchnorrSignature ( bytes) )
164+ let data = H512 :: deserialize ( deserializer) ?;
165+ Ok ( Self :: from ( data) )
175166 }
176167}
177168
178169impl Encodable for SchnorrSignature {
179170 fn rlp_append ( & self , s : & mut RlpStream ) {
180171 let data: H512 = self . 0 . into ( ) ;
181- s . append_single_value ( & data ) ;
172+ data . rlp_append ( s ) ;
182173 }
183174}
184175
185176impl Decodable for SchnorrSignature {
186177 fn decode ( rlp : & UntrustedRlp ) -> Result < Self , DecoderError > {
187- let data: H512 = rlp . as_val ( ) ?;
178+ let data = H512 :: decode ( rlp ) ?;
188179 Ok ( SchnorrSignature :: from ( data) )
189180 }
190181}
0 commit comments