@@ -209,25 +209,59 @@ impl<'de> Deserialize<'de> for DeltaWitness {
209209 where
210210 D : serde:: Deserializer < ' de > ,
211211 {
212- let bytes = <[ u8 ; 32 ] >:: deserialize ( deserializer) ?;
212+ let bytes: Vec < u8 > = Vec :: deserialize ( deserializer) ?;
213+ if bytes. len ( ) != 32 {
214+ return Err ( serde:: de:: Error :: custom (
215+ "Invalid byte length for DeltaWitness" ,
216+ ) ) ;
217+ }
213218 DeltaWitness :: from_bytes ( & bytes) . map_err ( |e| {
214219 serde:: de:: Error :: custom ( format ! ( "Failed to deserialize DeltaWitness: {:?}" , e) )
215220 } )
216221 }
217222}
218223
219- #[ test]
220- fn test_delta_proof ( ) {
224+ #[ cfg( test) ]
225+ mod tests {
226+ use super :: * ;
221227 use k256:: elliptic_curve:: rand_core:: OsRng ;
222228
223- let mut rng = OsRng ;
224- let signing_key = SigningKey :: random ( & mut rng) ;
225- let verifying_key = VerifyingKey :: from ( & signing_key) ;
229+ #[ test]
230+ fn test_delta_proof ( ) {
231+ let mut rng = OsRng ;
232+ let signing_key = SigningKey :: random ( & mut rng) ;
233+ let verifying_key = VerifyingKey :: from ( & signing_key) ;
234+
235+ let message = b"Hello, world!" ;
236+ let witness = DeltaWitness { signing_key } ;
237+ let proof = DeltaProof :: prove ( message, & witness) . unwrap ( ) ;
238+ let instance = DeltaInstance { verifying_key } ;
226239
227- let message = b"Hello, world!" ;
228- let witness = DeltaWitness { signing_key } ;
229- let proof = DeltaProof :: prove ( message, & witness) . unwrap ( ) ;
230- let instance = DeltaInstance { verifying_key } ;
240+ DeltaProof :: verify ( message, & proof, instance) . unwrap ( ) ;
241+ }
231242
232- DeltaProof :: verify ( message, & proof, instance) . unwrap ( ) ;
243+ /// DeltaProof: serialize then deserialize via bincode must round-trip.
244+ #[ test]
245+ fn delta_proof_bincode_roundtrip ( ) {
246+ let mut rng = OsRng ;
247+ let signing_key = SigningKey :: random ( & mut rng) ;
248+ let witness = DeltaWitness { signing_key } ;
249+ let proof = DeltaProof :: prove ( b"roundtrip" , & witness) . unwrap ( ) ;
250+
251+ let encoded = bincode:: serialize ( & proof) . unwrap ( ) ;
252+ let decoded: DeltaProof = bincode:: deserialize ( & encoded) . unwrap ( ) ;
253+ assert_eq ! ( proof, decoded) ;
254+ }
255+
256+ /// DeltaWitness: serialize then deserialize via bincode must round-trip.
257+ #[ test]
258+ fn delta_witness_bincode_roundtrip ( ) {
259+ let mut rng = OsRng ;
260+ let signing_key = SigningKey :: random ( & mut rng) ;
261+ let witness = DeltaWitness { signing_key } ;
262+
263+ let encoded = bincode:: serialize ( & witness) . unwrap ( ) ;
264+ let decoded: DeltaWitness = bincode:: deserialize ( & encoded) . unwrap ( ) ;
265+ assert_eq ! ( witness, decoded) ;
266+ }
233267}
0 commit comments