@@ -632,3 +632,62 @@ fn hex_script(s: &str) -> elements::Script {
632
632
let v: Vec < u8 > = elements:: hashes:: hex:: FromHex :: from_hex ( s) . unwrap ( ) ;
633
633
elements:: Script :: from ( v)
634
634
}
635
+
636
+ #[ cfg( test) ]
637
+ mod tests {
638
+ use std:: str:: FromStr ;
639
+
640
+ use bitcoin:: hashes:: hash160;
641
+
642
+ use super :: * ;
643
+
644
+ #[ test]
645
+ fn regression_bitcoin_key_hash ( ) {
646
+ use bitcoin:: PublicKey ;
647
+
648
+ // Uncompressed key.
649
+ let pk = PublicKey :: from_str (
650
+ "042e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af191923a2964c177f5b5923ae500fca49e99492d534aa3759d6b25a8bc971b133"
651
+ ) . unwrap ( ) ;
652
+
653
+ let want = hash160:: Hash :: from_str ( "ac2e7daf42d2c97418fd9f78af2de552bb9c6a7a" ) . unwrap ( ) ;
654
+ let got = pk. to_pubkeyhash ( ) ;
655
+ assert_eq ! ( got, want)
656
+ }
657
+
658
+ #[ test]
659
+ fn regression_secp256k1_key_hash ( ) {
660
+ use bitcoin:: secp256k1:: PublicKey ;
661
+
662
+ // Compressed key.
663
+ let pk = PublicKey :: from_str (
664
+ "032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af" ,
665
+ )
666
+ . unwrap ( ) ;
667
+
668
+ let want = hash160:: Hash :: from_str ( "9511aa27ef39bbfa4e4f3dd15f4d66ea57f475b4" ) . unwrap ( ) ;
669
+ let got = pk. to_pubkeyhash ( ) ;
670
+ assert_eq ! ( got, want)
671
+ }
672
+
673
+ #[ test]
674
+ fn regression_xonly_key_hash ( ) {
675
+ use bitcoin:: secp256k1:: XOnlyPublicKey ;
676
+
677
+ let pk = XOnlyPublicKey :: from_str (
678
+ "cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115" ,
679
+ )
680
+ . unwrap ( ) ;
681
+
682
+ let want = hash160:: Hash :: from_str ( "eb8ac65f971ae688a94aeabf223506865e7e08f2" ) . unwrap ( ) ;
683
+ let got = pk. to_pubkeyhash ( ) ;
684
+ assert_eq ! ( got, want)
685
+ }
686
+
687
+ #[ test]
688
+ fn regression_string_key_hash ( ) {
689
+ let pk = String :: from ( "some-key-hash-string" ) ;
690
+ let hash = pk. to_pubkeyhash ( ) ;
691
+ assert_eq ! ( hash, pk)
692
+ }
693
+ }
0 commit comments