def test_sign_invalid_hash(self) -> None: key = CBitcoinKey('5KJvsngHeMpm884wtkJNzQGaCErckhHJBGFsvd3VyK5qMZXj3hS') with self.assertRaises(TypeError): key.sign('0' * 32) # type: ignore hash = b'\x00' * 32 with self.assertRaises(ValueError): key.sign(hash[0:-2])
def test_sign(self) -> None: key = CBitcoinKey('5KJvsngHeMpm884wtkJNzQGaCErckhHJBGFsvd3VyK5qMZXj3hS') hash = b'\x00' * 32 sig = key.sign(hash) # Check a valid signature self.assertTrue(key.pub.verify(hash, sig)) self.assertTrue(IsLowDERSignature(sig)) # Check that invalid hash returns false self.assertFalse(key.pub.verify(b'\xFF'*32, sig)) # Check that invalid signature returns false. # # Note the one-in-four-billion chance of a false positive :) self.assertFalse(key.pub.verify(hash, sig[0:-4] + b'\x00\x00\x00\x00'))