File tree Expand file tree Collapse file tree 3 files changed +36
-3
lines changed Expand file tree Collapse file tree 3 files changed +36
-3
lines changed Original file line number Diff line number Diff line change @@ -27,7 +27,6 @@ pem = ["ed25519-dalek/pem"]
2727
2828[dependencies ]
2929rand_core = " ^0.6"
30- sha2 = " ^0.9"
3130prost = " 0.10"
3231prost-types = " 0.10"
3332regex = { version = " 1.5" , default-features = false , features = [" std" ] }
@@ -38,7 +37,7 @@ thiserror = "1"
3837rand = { version = " 0.8" }
3938wasm-bindgen = { version = " 0.2" , optional = true }
4039base64 = " 0.13.0"
41- ed25519-dalek = { version = " 2.0.0" , features = [" rand_core" , " zeroize" ] }
40+ ed25519-dalek = { version = " 2.0.0" , features = [" rand_core" , " zeroize" , " digest " ] }
4241serde = { version = " 1.0.132" , optional = true , features = [" derive" ] }
4342getrandom = { version = " 0.1.16" }
4443time = { version = " 0.3.7" , features = [" formatting" , " parsing" ] }
Original file line number Diff line number Diff line change @@ -848,4 +848,38 @@ mod tests {
848848 let deser_pub = PublicKey :: from_public_key_der ( & der_pub, Algorithm :: Ed25519 ) . unwrap ( ) ;
849849 assert_eq ! ( ed25519_pub, deser_pub) ;
850850 }
851+
852+ #[ test]
853+ fn prehashed_signature ( ) {
854+ use :: p256:: NistP256 ;
855+ use ecdsa:: hazmat:: DigestPrimitive ;
856+ use ed25519_dalek:: DigestSigner ;
857+
858+ fn generate_authority_block_signature_payload_v1_prehashed <
859+ H : ecdsa:: signature:: digest:: Update ,
860+ > (
861+ payload : & [ u8 ] ,
862+ version : u32 ,
863+ hasher : & mut H ,
864+ ) {
865+ hasher. update ( b"\0 BLOCK\0 \0 VERSION\0 " ) ;
866+ hasher. update ( & version. to_le_bytes ( ) ) ;
867+
868+ hasher. update ( & b"\0 PAYLOAD\0 " [ ..] ) ;
869+ hasher. update ( payload) ;
870+ }
871+
872+ let mut prehashed: ed25519_dalek:: Sha512 = ed25519_dalek:: Sha512 :: default ( ) ;
873+ generate_authority_block_signature_payload_v1_prehashed ( b"payload" , 1 , & mut prehashed) ;
874+ let kp = ed25519:: KeyPair :: new ( ) ;
875+ //let hash = ed25519_dalek::Digest::finalize(prehashed);
876+ let sig = kp. kp . try_sign_digest ( prehashed) . unwrap ( ) ;
877+ println ! ( "{:?}" , sig) ;
878+
879+ let mut prehashed2 = <NistP256 as DigestPrimitive >:: Digest :: default ( ) ;
880+ generate_authority_block_signature_payload_v1_prehashed ( b"payload" , 1 , & mut prehashed2) ;
881+ let kp = p256:: KeyPair :: new ( ) ;
882+ let sig: ecdsa:: Signature < NistP256 > = kp. kp . try_sign_digest ( prehashed2) . unwrap ( ) ;
883+ println ! ( "{:?}" , sig) ;
884+ }
851885}
Original file line number Diff line number Diff line change @@ -12,7 +12,7 @@ use std::hash::Hash;
1212/// pair of cryptographic keys used to sign a token's block
1313#[ derive( Debug , PartialEq ) ]
1414pub struct KeyPair {
15- kp : SigningKey ,
15+ pub ( super ) kp : SigningKey ,
1616}
1717
1818impl KeyPair {
You can’t perform that action at this time.
0 commit comments