1010import subprocess
1111import pytest
1212from binascii import hexlify , unhexlify
13- from hashlib import sha1 , sha256 , sha384 , sha512
1413import hashlib
1514from functools import partial
1615
@@ -97,11 +96,16 @@ def test_deterministic(self):
9796 data = b ("blahblah" )
9897 secexp = int ("9d0219792467d7d37b4d43298a7d0c05" , 16 )
9998
100- priv = SigningKey .from_secret_exponent (secexp , SECP256k1 , sha256 )
99+ priv = SigningKey .from_secret_exponent (
100+ secexp , SECP256k1 , hashlib .sha256
101+ )
101102 pub = priv .get_verifying_key ()
102103
103104 k = rfc6979 .generate_k (
104- SECP256k1 .generator .order (), secexp , sha256 , sha256 (data ).digest ()
105+ SECP256k1 .generator .order (),
106+ secexp ,
107+ hashlib .sha256 ,
108+ hashlib .sha256 (data ).digest (),
105109 )
106110
107111 sig1 = priv .sign (data , k = k )
@@ -110,7 +114,7 @@ def test_deterministic(self):
110114 sig2 = priv .sign (data , k = k )
111115 self .assertTrue (pub .verify (sig2 , data ))
112116
113- sig3 = priv .sign_deterministic (data , sha256 )
117+ sig3 = priv .sign_deterministic (data , hashlib . sha256 )
114118 self .assertTrue (pub .verify (sig3 , data ))
115119
116120 self .assertEqual (sig1 , sig2 )
@@ -601,27 +605,29 @@ def test_sign_with_too_long_hash(self):
601605 sk .sign_digest (b ("\xff " ) * 64 )
602606
603607 def test_hashfunc (self ):
604- sk = SigningKey .generate (curve = NIST256p , hashfunc = sha256 )
608+ sk = SigningKey .generate (curve = NIST256p , hashfunc = hashlib . sha256 )
605609 data = b ("security level is 128 bits" )
606610 sig = sk .sign (data )
607611 vk = VerifyingKey .from_string (
608- sk .get_verifying_key ().to_string (), curve = NIST256p , hashfunc = sha256
612+ sk .get_verifying_key ().to_string (),
613+ curve = NIST256p ,
614+ hashfunc = hashlib .sha256 ,
609615 )
610616 self .assertTrue (vk .verify (sig , data ))
611617
612618 sk2 = SigningKey .generate (curve = NIST256p )
613- sig2 = sk2 .sign (data , hashfunc = sha256 )
619+ sig2 = sk2 .sign (data , hashfunc = hashlib . sha256 )
614620 vk2 = VerifyingKey .from_string (
615621 sk2 .get_verifying_key ().to_string (),
616622 curve = NIST256p ,
617- hashfunc = sha256 ,
623+ hashfunc = hashlib . sha256 ,
618624 )
619625 self .assertTrue (vk2 .verify (sig2 , data ))
620626
621627 vk3 = VerifyingKey .from_string (
622628 sk .get_verifying_key ().to_string (), curve = NIST256p
623629 )
624- self .assertTrue (vk3 .verify (sig , data , hashfunc = sha256 ))
630+ self .assertTrue (vk3 .verify (sig , data , hashfunc = hashlib . sha256 ))
625631
626632 def test_public_key_recovery (self ):
627633 # Create keys
@@ -660,7 +666,7 @@ def test_public_key_recovery_with_custom_hash(self):
660666 # Create keys
661667 curve = BRAINPOOLP160r1
662668
663- sk = SigningKey .generate (curve = curve , hashfunc = sha256 )
669+ sk = SigningKey .generate (curve = curve , hashfunc = hashlib . sha256 )
664670 vk = sk .get_verifying_key ()
665671
666672 # Sign a message
@@ -669,7 +675,11 @@ def test_public_key_recovery_with_custom_hash(self):
669675
670676 # Recover verifying keys
671677 recovered_vks = VerifyingKey .from_public_key_recovery (
672- signature , data , curve , hashfunc = sha256 , allow_truncate = True
678+ signature ,
679+ data ,
680+ curve ,
681+ hashfunc = hashlib .sha256 ,
682+ allow_truncate = True ,
673683 )
674684
675685 # Test if each pk is valid
@@ -679,7 +689,7 @@ def test_public_key_recovery_with_custom_hash(self):
679689
680690 # Test if properties are equal
681691 self .assertEqual (vk .curve , recovered_vk .curve )
682- self .assertEqual (sha256 , recovered_vk .default_hashfunc )
692+ self .assertEqual (hashlib . sha256 , recovered_vk .default_hashfunc )
683693
684694 # Test if original vk is the list of recovered keys
685695 self .assertIn (
@@ -1656,8 +1666,8 @@ def test_SECP256k1(self):
16561666 self ._do (
16571667 generator = SECP256k1 .generator ,
16581668 secexp = int ("9d0219792467d7d37b4d43298a7d0c05" , 16 ),
1659- hsh = sha256 (b ("sample" )).digest (),
1660- hash_func = sha256 ,
1669+ hsh = hashlib . sha256 (b ("sample" )).digest (),
1670+ hash_func = hashlib . sha256 ,
16611671 expected = int (
16621672 "8fa1f95d514760e498f28957b824ee6ec39ed64826ff4fecc2b5739ec45b91cd" ,
16631673 16 ,
@@ -1671,8 +1681,8 @@ def test_SECP256k1_2(self):
16711681 "cca9fbcc1b41e5a95d369eaa6ddcff73b61a4efaa279cfc6567e8daa39cbaf50" ,
16721682 16 ,
16731683 ),
1674- hsh = sha256 (b ("sample" )).digest (),
1675- hash_func = sha256 ,
1684+ hsh = hashlib . sha256 (b ("sample" )).digest (),
1685+ hash_func = hashlib . sha256 ,
16761686 expected = int (
16771687 "2df40ca70e639d89528a6b670d9d48d9165fdc0febc0974056bdce192b8e16a3" ,
16781688 16 ,
@@ -1683,39 +1693,39 @@ def test_SECP256k1_3(self):
16831693 self ._do (
16841694 generator = SECP256k1 .generator ,
16851695 secexp = 0x1 ,
1686- hsh = sha256 (b ("Satoshi Nakamoto" )).digest (),
1687- hash_func = sha256 ,
1696+ hsh = hashlib . sha256 (b ("Satoshi Nakamoto" )).digest (),
1697+ hash_func = hashlib . sha256 ,
16881698 expected = 0x8F8A276C19F4149656B280621E358CCE24F5F52542772691EE69063B74F15D15 ,
16891699 )
16901700
16911701 def test_SECP256k1_4 (self ):
16921702 self ._do (
16931703 generator = SECP256k1 .generator ,
16941704 secexp = 0x1 ,
1695- hsh = sha256 (
1705+ hsh = hashlib . sha256 (
16961706 b (
16971707 "All those moments will be lost in time, like tears in rain. Time to die..."
16981708 )
16991709 ).digest (),
1700- hash_func = sha256 ,
1710+ hash_func = hashlib . sha256 ,
17011711 expected = 0x38AA22D72376B4DBC472E06C3BA403EE0A394DA63FC58D88686C611ABA98D6B3 ,
17021712 )
17031713
17041714 def test_SECP256k1_5 (self ):
17051715 self ._do (
17061716 generator = SECP256k1 .generator ,
17071717 secexp = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140 ,
1708- hsh = sha256 (b ("Satoshi Nakamoto" )).digest (),
1709- hash_func = sha256 ,
1718+ hsh = hashlib . sha256 (b ("Satoshi Nakamoto" )).digest (),
1719+ hash_func = hashlib . sha256 ,
17101720 expected = 0x33A19B60E25FB6F4435AF53A3D42D493644827367E6453928554F43E49AA6F90 ,
17111721 )
17121722
17131723 def test_SECP256k1_6 (self ):
17141724 self ._do (
17151725 generator = SECP256k1 .generator ,
17161726 secexp = 0xF8B8AF8CE3C7CCA5E300D33939540C10D45CE001B8F252BFBC57BA0342904181 ,
1717- hsh = sha256 (b ("Alan Turing" )).digest (),
1718- hash_func = sha256 ,
1727+ hsh = hashlib . sha256 (b ("Alan Turing" )).digest (),
1728+ hash_func = hashlib . sha256 ,
17191729 expected = 0x525A82B70E67874398067543FD84C83D30C175FDC45FDEEE082FE13B1D7CFDF1 ,
17201730 )
17211731
@@ -1734,16 +1744,16 @@ def test_1(self):
17341744 "AF2BDBE1AA9B6EC1E2ADE1D694F41FC71A831D0268E9891562113D8A62ADD1BF"
17351745 )
17361746 ),
1737- hash_func = sha256 ,
1747+ hash_func = hashlib . sha256 ,
17381748 expected = int ("23AF4074C90A02B3FE61D286D5C87F425E6BDD81B" , 16 ),
17391749 )
17401750
17411751 def test_2 (self ):
17421752 self ._do (
17431753 generator = NIST192p .generator ,
17441754 secexp = int ("6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4" , 16 ),
1745- hsh = sha1 (b ("sample" )).digest (),
1746- hash_func = sha1 ,
1755+ hsh = hashlib . sha1 (b ("sample" )).digest (),
1756+ hash_func = hashlib . sha1 ,
17471757 expected = int (
17481758 "37D7CA00D2C7B0E5E412AC03BD44BA837FDD5B28CD3B0021" , 16
17491759 ),
@@ -1753,8 +1763,8 @@ def test_3(self):
17531763 self ._do (
17541764 generator = NIST192p .generator ,
17551765 secexp = int ("6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4" , 16 ),
1756- hsh = sha256 (b ("sample" )).digest (),
1757- hash_func = sha256 ,
1766+ hsh = hashlib . sha256 (b ("sample" )).digest (),
1767+ hash_func = hashlib . sha256 ,
17581768 expected = int (
17591769 "32B1B6D7D42A05CB449065727A84804FB1A3E34D8F261496" , 16
17601770 ),
@@ -1764,8 +1774,8 @@ def test_4(self):
17641774 self ._do (
17651775 generator = NIST192p .generator ,
17661776 secexp = int ("6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4" , 16 ),
1767- hsh = sha512 (b ("sample" )).digest (),
1768- hash_func = sha512 ,
1777+ hsh = hashlib . sha512 (b ("sample" )).digest (),
1778+ hash_func = hashlib . sha512 ,
17691779 expected = int (
17701780 "A2AC7AB055E4F20692D49209544C203A7D1F2C0BFBC75DB1" , 16
17711781 ),
@@ -1775,8 +1785,8 @@ def test_5(self):
17751785 self ._do (
17761786 generator = NIST192p .generator ,
17771787 secexp = int ("6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4" , 16 ),
1778- hsh = sha1 (b ("test" )).digest (),
1779- hash_func = sha1 ,
1788+ hsh = hashlib . sha1 (b ("test" )).digest (),
1789+ hash_func = hashlib . sha1 ,
17801790 expected = int (
17811791 "D9CF9C3D3297D3260773A1DA7418DB5537AB8DD93DE7FA25" , 16
17821792 ),
@@ -1786,8 +1796,8 @@ def test_6(self):
17861796 self ._do (
17871797 generator = NIST192p .generator ,
17881798 secexp = int ("6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4" , 16 ),
1789- hsh = sha256 (b ("test" )).digest (),
1790- hash_func = sha256 ,
1799+ hsh = hashlib . sha256 (b ("test" )).digest (),
1800+ hash_func = hashlib . sha256 ,
17911801 expected = int (
17921802 "5C4CE89CF56D9E7C77C8585339B006B97B5F0680B4306C6C" , 16
17931803 ),
@@ -1797,8 +1807,8 @@ def test_7(self):
17971807 self ._do (
17981808 generator = NIST192p .generator ,
17991809 secexp = int ("6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4" , 16 ),
1800- hsh = sha512 (b ("test" )).digest (),
1801- hash_func = sha512 ,
1810+ hsh = hashlib . sha512 (b ("test" )).digest (),
1811+ hash_func = hashlib . sha512 ,
18021812 expected = int (
18031813 "0758753A5254759C7CFBAD2E2D9B0792EEE44136C9480527" , 16
18041814 ),
@@ -1811,8 +1821,8 @@ def test_8(self):
18111821 "0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538" ,
18121822 16 ,
18131823 ),
1814- hsh = sha1 (b ("sample" )).digest (),
1815- hash_func = sha1 ,
1824+ hsh = hashlib . sha1 (b ("sample" )).digest (),
1825+ hash_func = hashlib . sha1 ,
18161826 expected = int (
18171827 "089C071B419E1C2820962321787258469511958E80582E95D8378E0C2CCDB3CB42BEDE42F50E3FA3C71F5A76724281D31D9C89F0F91FC1BE4918DB1C03A5838D0F9" ,
18181828 16 ,
@@ -1826,8 +1836,8 @@ def test_9(self):
18261836 "0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538" ,
18271837 16 ,
18281838 ),
1829- hsh = sha256 (b ("sample" )).digest (),
1830- hash_func = sha256 ,
1839+ hsh = hashlib . sha256 (b ("sample" )).digest (),
1840+ hash_func = hashlib . sha256 ,
18311841 expected = int (
18321842 "0EDF38AFCAAECAB4383358B34D67C9F2216C8382AAEA44A3DAD5FDC9C32575761793FEF24EB0FC276DFC4F6E3EC476752F043CF01415387470BCBD8678ED2C7E1A0" ,
18331843 16 ,
@@ -1841,8 +1851,8 @@ def test_10(self):
18411851 "0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538" ,
18421852 16 ,
18431853 ),
1844- hsh = sha512 (b ("test" )).digest (),
1845- hash_func = sha512 ,
1854+ hsh = hashlib . sha512 (b ("test" )).digest (),
1855+ hash_func = hashlib . sha512 ,
18461856 expected = int (
18471857 "16200813020EC986863BEDFC1B121F605C1215645018AEA1A7B215A564DE9EB1B38A67AA1128B80CE391C4FB71187654AAA3431027BFC7F395766CA988C964DC56D" ,
18481858 16 ,
@@ -2206,7 +2216,7 @@ def test_brainpoolP512r1(self):
22062216 "6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D" ,
22072217 "9E56F509196784D963D1C0A401510EE7ADA3DCC5DEE04B154BF61AF1D5A6DECE" ,
22082218 b"abc" ,
2209- sha256 ,
2219+ hashlib . sha256 ,
22102220 "CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C" ,
22112221 "86FA3BB4E26CAD5BF90B7F81899256CE7594BB1EA0C89212748BFF3B3D5B0315" ,
22122222 NIST256p ,
@@ -2222,7 +2232,7 @@ def test_brainpoolP512r1(self):
22222232 "B4B74E44D71A13D568003D7489908D564C7761E229C58CBFA18950096EB7463B"
22232233 "854D7FA992F934D927376285E63414FA" ,
22242234 b"abc" ,
2225- sha384 ,
2235+ hashlib . sha384 ,
22262236 "FB017B914E29149432D8BAC29A514640B46F53DDAB2C69948084E2930F1C8F7E"
22272237 "08E07C9C63F2D21A07DCB56A6AF56EB3" ,
22282238 "B263A1305E057F984D38726A1B46874109F417BCA112674C528262A40A629AF1"
@@ -2244,7 +2254,7 @@ def test_brainpoolP512r1(self):
22442254 "373778F9DE6B6497B1EF825FF24F42F9B4A4BD7382CFC3378A540B1B7F0C1B95"
22452255 "6C2F" ,
22462256 b"abc" ,
2247- sha512 ,
2257+ hashlib . sha512 ,
22482258 "0154FD3836AF92D0DCA57DD5341D3053988534FDE8318FC6AAAAB68E2E6F4339"
22492259 "B19F2F281A7E0B22C269D93CF8794A9278880ED7DBB8D9362CAEACEE54432055"
22502260 "2251" ,
0 commit comments