@@ -186,6 +186,27 @@ impl Message {
186186 | Message :: Dm ( m) => m. verify ( ) ,
187187 }
188188 }
189+
190+ pub fn sign ( message : String , keys : & Keys ) -> Signature {
191+ let hash: Sha256Hash = Sha256Hash :: hash ( message. as_bytes ( ) ) ;
192+ let hash = hash. to_byte_array ( ) ;
193+ let hash_str = hex:: encode ( hash) ;
194+ println ! ( "hash en sign() en core: {:?}" , hash_str) ;
195+ let message: BitcoinMessage = BitcoinMessage :: from_digest ( hash) ;
196+
197+ keys. sign_schnorr ( & message)
198+ }
199+
200+ pub fn verify_signature ( message : String , pubkey : PublicKey , sig : Signature ) -> bool {
201+ // Create payload hash
202+ let hash: Sha256Hash = Sha256Hash :: hash ( message. as_bytes ( ) ) ;
203+ let hash = hash. to_byte_array ( ) ;
204+ let message: BitcoinMessage = BitcoinMessage :: from_digest ( hash) ;
205+ // Create a verification-only context for better performance
206+ let secp = Secp256k1 :: verification_only ( ) ;
207+ // Verify signature
208+ pubkey. verify ( & secp, & message, & sig) . is_ok ( )
209+ }
189210}
190211
191212/// Use this Message to establish communication between users and Mostro
@@ -391,25 +412,4 @@ impl MessageKind {
391412 }
392413 ( false , 0 )
393414 }
394-
395- pub fn sign ( & self , keys : & Keys ) -> Signature {
396- let message = self . as_json ( ) . unwrap ( ) ;
397- let hash: Sha256Hash = Sha256Hash :: hash ( message. as_bytes ( ) ) ;
398- let hash = hash. to_byte_array ( ) ;
399- let message: BitcoinMessage = BitcoinMessage :: from_digest ( hash) ;
400-
401- keys. sign_schnorr ( & message)
402- }
403-
404- pub fn verify_signature ( & self , pubkey : PublicKey , sig : Signature ) -> bool {
405- // Create message hash
406- let message = self . as_json ( ) . unwrap ( ) ;
407- let hash: Sha256Hash = Sha256Hash :: hash ( message. as_bytes ( ) ) ;
408- let hash = hash. to_byte_array ( ) ;
409- let message: BitcoinMessage = BitcoinMessage :: from_digest ( hash) ;
410- // Create a verification-only context for better performance
411- let secp = Secp256k1 :: verification_only ( ) ;
412- // Verify signature
413- pubkey. verify ( & secp, & message, & sig) . is_ok ( )
414- }
415415}
0 commit comments