@@ -3,12 +3,9 @@ use k256::{
33 elliptic_curve:: PublicKey , elliptic_curve:: ScalarPrimitive , ProjectivePoint , Scalar , SecretKey ,
44} ;
55use serde:: { de, Deserialize , Deserializer , Serialize , Serializer } ;
6- use serde:: de:: { SeqAccess } ;
76
87use sha3:: { Digest , Keccak256 } ;
9- use std:: marker:: PhantomData ;
10- use std:: fmt;
11- use serde:: de:: Visitor ;
8+ use serde_bytes:: ByteArray ;
129
1310#[ derive( Clone , Debug , Deserialize , Serialize ) ]
1411#[ cfg_attr( feature = "nif" , serde( rename = "Elixir.Anoma.Arm.DeltaProof" ) ) ]
@@ -20,38 +17,11 @@ pub struct DeltaProof {
2017}
2118
2219fn serialize_signature < S > ( t : & Signature , s : S ) -> Result < S :: Ok , S :: Error > where S : Serializer {
23- s . serialize_bytes ( & t. to_bytes ( ) )
20+ ByteArray :: < 64 > :: new ( t. to_bytes ( ) . into ( ) ) . serialize ( s )
2421}
2522
2623fn deserialize_signature < ' de , D > ( deserializer : D ) -> Result < Signature , D :: Error > where D : Deserializer < ' de > {
27- const LEN : usize = 64 ;
28- struct ArrayVisitor < T > {
29- element : PhantomData < T > ,
30- }
31-
32- impl < ' de , T > Visitor < ' de > for ArrayVisitor < T >
33- where T : Default + Copy + Deserialize < ' de >
34- {
35- type Value = [ T ; LEN ] ;
36-
37- fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
38- write ! ( formatter, "an array of length {}" , LEN )
39- }
40-
41- fn visit_seq < A > ( self , mut seq : A ) -> Result < [ T ; LEN ] , A :: Error >
42- where A : SeqAccess < ' de >
43- {
44- let mut arr = [ T :: default ( ) ; LEN ] ;
45- for i in 0 ..LEN {
46- arr[ i] = seq. next_element ( ) ?
47- . ok_or_else ( || de:: Error :: invalid_length ( i, & self ) ) ?;
48- }
49- Ok ( arr)
50- }
51- }
52-
53- let visitor = ArrayVisitor { element : PhantomData } ;
54- let b: [ u8 ; LEN ] = deserializer. deserialize_tuple ( LEN , visitor) ?;
24+ let b: [ u8 ; 64 ] = ByteArray :: deserialize ( deserializer) ?. into_array ( ) ;
5525 Signature :: from_bytes ( & b. into ( ) ) . map_err ( de:: Error :: custom)
5626}
5727
@@ -72,11 +42,11 @@ pub struct DeltaWitness {
7242}
7343
7444fn serialize_signing_key < S > ( t : & SigningKey , s : S ) -> Result < S :: Ok , S :: Error > where S : Serializer {
75- s . serialize_bytes ( & t. to_bytes ( ) )
45+ ByteArray :: < 32 > :: new ( t. to_bytes ( ) . into ( ) ) . serialize ( s )
7646}
7747
7848fn deserialize_signing_key < ' de , D > ( deserializer : D ) -> Result < SigningKey , D :: Error > where D : Deserializer < ' de > {
79- let b: [ u8 ; 32 ] = Deserialize :: deserialize ( deserializer) ?;
49+ let b: [ u8 ; 32 ] = ByteArray :: deserialize ( deserializer) ?. into_array ( ) ;
8050 SigningKey :: from_bytes ( & b. into ( ) ) . map_err ( de:: Error :: custom)
8151}
8252
0 commit comments