def doit(accept=True, in_psbt=None, finalize=False): if accept != None: need_keypress('y' if accept else 'x') if accept == False: with pytest.raises(CCUserRefused): done = None while done == None: time.sleep(0.050) done = dev.send_recv(CCProtocolPacker.get_signed_txn(), timeout=None) return else: done = None while done == None: time.sleep(0.050) done = dev.send_recv(CCProtocolPacker.get_signed_txn(), timeout=None) assert len(done) == 2 resp_len, chk = done psbt_out = dev.download_file(resp_len, chk) if not finalize: if in_psbt: assert BasicPSBT().parse(in_psbt) == BasicPSBT().parse(psbt_out) else: from pycoin.tx.Tx import Tx # parse it res = psbt_out assert res[0:4] != b'psbt' t = Tx.from_bin(res) assert t.version in [1, 2] return psbt_out
def test_speed_test(request, fake_txn, is_mark3, start_sign, end_sign, dev, need_keypress): import time # measure time to sign a larger txn if is_mark3: num_in = 20 num_out = 250 else: num_in = 9 num_out = 100 psbt = fake_txn(num_in, num_out, dev.master_xpub, segwit_in=True) open('debug/speed.psbt', 'wb').write(psbt) dt = time.time() start_sign(psbt, finalize=False) tx_time = time.time() - dt need_keypress('y', timeout=None) dt = time.time() done = None while done == None: time.sleep(0.05) done = dev.send_recv(CCProtocolPacker.get_signed_txn(), timeout=None) ready_time = time.time() - dt print(" Tx time: %.1f" % tx_time) print("Sign time: %.1f" % ready_time)
def wait_til_signed(dev): result = None while result == None: time.sleep(0.050) result = dev.send_recv(CCProtocolPacker.get_signed_txn(), timeout=None) return result
def xxx_test_sign_truncated(dev): ll, sha = dev.upload_file(open('data/truncated.psbt', 'rb').read()) dev.send_recv(CCProtocolPacker.sign_transaction(ll, sha)) with pytest.raises(CCProtoError): done = None while done == None: time.sleep(0.050) done = dev.send_recv(CCProtocolPacker.get_signed_txn(), timeout=None)
def test_sign1(dev, need_keypress, finalize): in_psbt = a2b_hex(open('data/p2pkh-in-scriptsig.psbt', 'rb').read()) ll, sha = dev.upload_file(in_psbt) dev.send_recv(CCProtocolPacker.sign_transaction(ll, sha, finalize)) #need_keypress('y') with pytest.raises(CCProtoError) as ee: while dev.send_recv(CCProtocolPacker.get_signed_txn(), timeout=None) == None: pass assert 'None of the keys' in str(ee)