@@ -9,7 +9,7 @@ use std::io::Read;
99use std:: path:: { Path , PathBuf } ;
1010
1111use data_encoding:: HEXLOWER ;
12- use ed25519_dalek:: Keypair ;
12+ use ed25519_dalek:: { Keypair , Signature } ;
1313use hypercore:: Feed ;
1414use hypercore:: { Storage , Store } ;
1515use random_access_disk:: RandomAccessDisk ;
@@ -56,22 +56,31 @@ fn deterministic_data_and_tree_after_replication() {
5656}
5757
5858#[ async_std:: test]
59- #[ ignore]
6059async fn deterministic_signatures ( ) {
6160 let key = hex_bytes ( "9718a1ff1c4ca79feac551c0c7212a65e4091278ec886b88be01ee4039682238" ) ;
6261 let keypair_bytes = hex_bytes ( concat ! (
6362 "53729c0311846cca9cc0eded07aaf9e6689705b6a0b1bb8c3a2a839b72fda383" ,
6463 "9718a1ff1c4ca79feac551c0c7212a65e4091278ec886b88be01ee4039682238"
6564 ) ) ;
6665
67- let expected_signatures = hex_bytes ( concat ! (
66+ let compat_v9_expected_signatures = hex_bytes ( concat ! (
6867 "050257010000400745643235353139000000000000000000000000000000000084684e8dd76c339" ,
6968 "d6f5754e813204906ee818e6c6cdc6a816a2ac785a3e0d926ac08641a904013194fe6121847b7da" ,
7069 "d4e361965d47715428eb0a0ededbdd5909d037ff3c3614fa0100ed9264a712d3b77cbe7a4f6eadd" ,
7170 "8f342809be99dfb9154a19e278d7a5de7d2b4d890f7701a38b006469f6bab1aff66ac6125d48baf" ,
7271 "dc0711057675ed57d445ce7ed4613881be37ebc56bb40556b822e431bb4dc3517421f9a5e3ed124" ,
7372 "eb5c4db8367386d9ce12b2408613b9fec2837022772a635ffd807" ,
7473 ) ) ;
74+ let compat_signatures_len = compat_v9_expected_signatures. len ( ) ;
75+ let compat_signature_struct = compat_v9_expected_signatures
76+ . into_iter ( )
77+ . skip ( compat_signatures_len - 64 )
78+ . collect :: < Vec < _ > > ( ) ;
79+
80+ let expected_signatures = hex_bytes ( concat ! (
81+ "42e057f2c225b4c5b97876a15959324931ad84646a8bf2e4d14487c0f117966a585edcdda54670d" ,
82+ "d5def829ca85924ce44ae307835e57d5729aef8cd91678b06" ,
83+ ) ) ;
7584
7685 for _ in 0 ..5 {
7786 let ( dir, storage) = mk_storage ( ) . await ;
@@ -87,12 +96,28 @@ async fn deterministic_signatures() {
8796 }
8897
8998 assert_eq ! ( read_bytes( & dir, Store :: Data ) , data) ;
90- assert_eq ! ( read_bytes( & dir, Store :: Signatures ) , expected_signatures) ;
99+ let actual_signatures = read_bytes ( & dir, Store :: Signatures ) ;
100+ let actual_signatures_len = actual_signatures. len ( ) ;
101+ assert_eq ! (
102+ actual_signatures
103+ . into_iter( )
104+ . skip( actual_signatures_len - 64 )
105+ . collect:: <Vec <_>>( ) ,
106+ expected_signatures
107+ ) ;
108+
109+ let compat_signature = Signature :: from_bytes ( & compat_signature_struct) . unwrap ( ) ;
110+ feed. verify ( feed. len ( ) - 1 , & compat_signature)
111+ . await
112+ . expect ( "Could not verify compat signature of hypercore v9" ) ;
91113
92114 remove_dir_all ( dir) . unwrap ( )
93115 }
94116}
95117
118+ #[ test]
119+ fn verify_older_signature_on_read ( ) { }
120+
96121#[ test]
97122#[ ignore]
98123fn deterministic_signatures_after_replication ( ) {
0 commit comments