Exemplo n.º 1
0
def test_ecrecover_output_zero(signature_test_contract, get_accounts,
                               get_private_key):
    """ ecrecover returns 0 due to an error caused by an incorrect value of the v parameter """
    A = get_accounts(1)[0]
    privatekey = get_private_key(A)
    message_hash = Web3.soliditySha3(['string', 'uint256'], ['hello', 5])
    signature = sign(privatekey, message_hash, v=27)

    assert signature_test_contract.call().verifyEcrecoverOutput(
        message_hash, signature[:32], signature[32:64], 2) == empty_address
def test_verify_fail(signature_test_contract, get_accounts, get_private_key):
    (A, B) = get_accounts(2)
    message_hash = Web3.soliditySha3(['string', 'uint256'], ['hello', 5])
    signature = sign(get_private_key(A), message_hash, v=27)

    assert signature_test_contract.call().verify(message_hash, signature) == A

    message_hash = Web3.soliditySha3(['string', 'uint256'], ['hello', 6])
    assert signature_test_contract.call().verify(message_hash, signature) != A

    signature2 = signature[:65] + bytes([2])
    with pytest.raises(tester.TransactionFailed):
        signature_test_contract.call().verify(message_hash, signature2)
Exemplo n.º 3
0
def test_ecrecover_output_fail(signature_test_contract, get_accounts,
                               get_private_key):
    A = get_accounts(1)[0]
    privatekey = get_private_key(A)
    message_hash = Web3.soliditySha3(['string', 'uint256'], ['hello', 5])
    signature = sign(privatekey, message_hash, v=27)

    assert signature_test_contract.call().verifyEcrecoverOutput(
        message_hash, signature[:32], signature[32:64],
        int.from_bytes(signature[64:], byteorder='big')) == A

    message_hash2 = Web3.soliditySha3(['string', 'uint256'], ['hello', 6])
    assert signature_test_contract.call().verifyEcrecoverOutput(
        message_hash2, signature[:32], signature[32:64],
        int.from_bytes(signature[64:], byteorder='big')) != A