2121//! EXPERIMENTAL**. (I haven't actually checked carefully that the
2222//! proofs are sound, for instance...)
2323#![ allow( non_snake_case) ]
24- #![ feature( test) ]
24+ #![ cfg_attr ( feature = "bench" , feature ( test) ) ]
2525
2626extern crate serde;
2727
@@ -399,7 +399,7 @@ macro_rules! create_nipk {
399399 }
400400 }
401401
402- #[ cfg( test) ]
402+ #[ cfg( all ( feature = "bench" , test) ) ]
403403 mod bench {
404404 extern crate test;
405405
@@ -477,13 +477,11 @@ macro_rules! create_nipk {
477477}
478478
479479#[ cfg( test) ]
480- mod tests {
480+ mod test {
481481 extern crate bincode;
482482 extern crate sha2;
483- extern crate test;
484483
485484 use self :: sha2:: Sha512 ;
486- use self :: test:: Bencher ;
487485
488486 use curve25519_dalek:: constants as dalek_constants;
489487 use curve25519_dalek:: ristretto:: RistrettoPoint ;
@@ -511,8 +509,8 @@ mod tests {
511509 }
512510 }
513511
514- #[ bench ]
515- fn create_gen_dleq ( b : & mut Bencher ) {
512+ #[ test ]
513+ fn create_and_verify_gen_dleq ( ) {
516514 let G = & dalek_constants:: RISTRETTO_BASEPOINT_POINT ;
517515 let H = RistrettoPoint :: hash_from_bytes :: < Sha512 > ( G . compress ( ) . as_bytes ( ) ) ;
518516
@@ -530,14 +528,34 @@ mod tests {
530528 } ;
531529 let secrets = dleq:: Secrets { x : & x } ;
532530
533- b. iter ( || {
534- let mut transcript = Transcript :: new ( b"DLEQBenchCreate" ) ;
535- dleq:: Proof :: create ( & mut transcript, publics, secrets)
536- } ) ;
531+ let mut transcript = Transcript :: new ( b"DLEQTest" ) ;
532+ let proof = dleq:: Proof :: create ( & mut transcript, publics, secrets) ;
533+ // serialize to bincode representation
534+ let proof_bytes = bincode:: serialize ( & proof) . unwrap ( ) ;
535+ // parse bytes back to memory
536+ let parsed_proof: dleq:: Proof = bincode:: deserialize ( & proof_bytes) . unwrap ( ) ;
537+
538+ let mut transcript = Transcript :: new ( b"DLEQTest" ) ;
539+ assert ! ( parsed_proof. verify( & mut transcript, publics) . is_ok( ) ) ;
537540 }
541+ }
542+
543+ #[ cfg( all( feature = "bench" , test) ) ]
544+ mod bench {
545+ use super :: * ;
546+
547+ extern crate test;
548+ extern crate sha2;
549+
550+ use self :: test:: Bencher ;
551+ use self :: sha2:: Sha512 ;
552+
553+ use curve25519_dalek:: constants as dalek_constants;
554+ use curve25519_dalek:: ristretto:: RistrettoPoint ;
555+ use curve25519_dalek:: scalar:: Scalar ;
538556
539557 #[ bench]
540- fn verify_gen_dleq ( b : & mut Bencher ) {
558+ fn create_gen_dleq ( b : & mut Bencher ) {
541559 let G = & dalek_constants:: RISTRETTO_BASEPOINT_POINT ;
542560 let H = RistrettoPoint :: hash_from_bytes :: < Sha512 > ( G . compress ( ) . as_bytes ( ) ) ;
543561
@@ -555,16 +573,14 @@ mod tests {
555573 } ;
556574 let secrets = dleq:: Secrets { x : & x } ;
557575
558- let mut transcript = Transcript :: new ( b"DLEQBenchVerify" ) ;
559- let proof = dleq:: Proof :: create ( & mut transcript, publics, secrets) ;
560576 b. iter ( || {
561- let mut transcript = Transcript :: new ( b"DLEQBenchVerify " ) ;
562- proof . verify ( & mut transcript, publics) . is_ok ( )
577+ let mut transcript = Transcript :: new ( b"DLEQBenchCreate " ) ;
578+ dleq :: Proof :: create ( & mut transcript, publics, secrets )
563579 } ) ;
564580 }
565581
566- #[ test ]
567- fn create_and_verify_gen_dleq ( ) {
582+ #[ bench ]
583+ fn verify_gen_dleq ( b : & mut Bencher ) {
568584 let G = & dalek_constants:: RISTRETTO_BASEPOINT_POINT ;
569585 let H = RistrettoPoint :: hash_from_bytes :: < Sha512 > ( G . compress ( ) . as_bytes ( ) ) ;
570586
@@ -582,14 +598,11 @@ mod tests {
582598 } ;
583599 let secrets = dleq:: Secrets { x : & x } ;
584600
585- let mut transcript = Transcript :: new ( b"DLEQTest " ) ;
601+ let mut transcript = Transcript :: new ( b"DLEQBenchVerify " ) ;
586602 let proof = dleq:: Proof :: create ( & mut transcript, publics, secrets) ;
587- // serialize to bincode representation
588- let proof_bytes = bincode:: serialize ( & proof) . unwrap ( ) ;
589- // parse bytes back to memory
590- let parsed_proof: dleq:: Proof = bincode:: deserialize ( & proof_bytes) . unwrap ( ) ;
591-
592- let mut transcript = Transcript :: new ( b"DLEQTest" ) ;
593- assert ! ( parsed_proof. verify( & mut transcript, publics) . is_ok( ) ) ;
603+ b. iter ( || {
604+ let mut transcript = Transcript :: new ( b"DLEQBenchVerify" ) ;
605+ proof. verify ( & mut transcript, publics) . is_ok ( )
606+ } ) ;
594607 }
595608}
0 commit comments