def signTx(self, key_bytes, tx_bytes, prevout_n, prevout_script, prevout_value): tx = self.loadTx(tx_bytes) sig_hash = SegwitV0SignatureHash(prevout_script, tx, prevout_n, SIGHASH_ALL, prevout_value) eck = PrivateKey(key_bytes) return eck.sign(sig_hash, hasher=None) + bytes((SIGHASH_ALL, ))
def test_signature_correct(self): private_key = PrivateKey() public_key = private_key.public_key message = urandom(200) signature = private_key.sign(message) assert verify_signature(signature, message, public_key.format(compressed=True)) assert verify_signature(signature, message, public_key.format(compressed=False))
def test_sign(self): coin_settings = {'rpcport': 0, 'rpcauth': 'none', 'blocks_confirmed': 1, 'conf_target': 1} ci = BTCInterface(coin_settings, 'regtest') vk = i2b(ci.getNewSecretKey()) pk = ci.getPubkey(vk) message = 'test signing message' message_hash = hashlib.sha256(bytes(message, 'utf-8')).digest() eck = PrivateKey(vk) sig = eck.sign(message.encode('utf-8')) ci.verifySig(pk, message_hash, sig)