File tree 1 file changed +38
-0
lines changed
core/src/consensus/sortition
1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change @@ -49,3 +49,41 @@ impl PriorityMessage {
49
49
&& self . info . verify_vrf_hash ( signer_public, & self . seed , Arc :: clone ( & sortition_scheme. vrf_inst ) ) ?)
50
50
}
51
51
}
52
+
53
+ #[ cfg( test) ]
54
+ mod priority_message_tests {
55
+ use ccrypto:: sha256;
56
+ use ckey:: { KeyPair , Private } ;
57
+ use parking_lot:: RwLock ;
58
+ use vrf:: openssl:: { CipherSuite , ECVRF } ;
59
+
60
+ use super :: * ;
61
+ #[ test]
62
+ fn check_priority_message_verification ( ) {
63
+ let priv_key: Private = sha256 ( "secret_key" ) . into ( ) ;
64
+ let pub_key = * KeyPair :: from_private ( priv_key) . expect ( "Valid private key" ) . public ( ) ;
65
+
66
+ let wrong_priv_key: Private = sha256 ( "wrong_secret_key2" ) . into ( ) ;
67
+ let wrong_pub_key = * KeyPair :: from_private ( wrong_priv_key) . expect ( "Valid private key" ) . public ( ) ;
68
+
69
+ let seed = sha256 ( "seed" ) ;
70
+ let ec_vrf = ECVRF :: from_suite ( CipherSuite :: SECP256K1_SHA256_SVDW ) . unwrap ( ) ;
71
+ let ec_vrf = Arc :: new ( RwLock :: new ( ec_vrf) ) ;
72
+ let sortition_scheme = VRFSortition {
73
+ total_power : 100 ,
74
+ expectation : 71.85 ,
75
+ vrf_inst : ec_vrf,
76
+ } ;
77
+ let voting_power = 50 ;
78
+ let priority_info =
79
+ sortition_scheme. create_highest_priority_info ( seed, priv_key, voting_power) . unwrap ( ) . unwrap ( ) ;
80
+
81
+ let priority_message = PriorityMessage {
82
+ seed,
83
+ info : priority_info,
84
+ signer_index : 0 ,
85
+ } ;
86
+ assert ! ( priority_message. verify( & pub_key, voting_power, & sortition_scheme) . unwrap( ) ) ;
87
+ assert ! ( priority_message. verify( & wrong_pub_key, voting_power, & sortition_scheme) . is_err( ) ) ;
88
+ }
89
+ }
You can’t perform that action at this time.
0 commit comments