def test_hash():
    ping = Ping(
        nonce=0,
        current_protocol_version=constants.PROTOCOL_VERSION,
        signature=constants.EMPTY_SIGNATURE,
    )
    ping.sign(signer)
def test_signature():
    ping = Ping(
        nonce=0,
        current_protocol_version=constants.PROTOCOL_VERSION,
        signature=constants.EMPTY_SIGNATURE,
    )
    ping.sign(signer)
    assert ping.sender == ADDRESS

    # test that the valid v values are accepted
    message_data = ping._data_to_sign()
    # This signature will sometimes end up with v being 0, sometimes 1
    signature = signer.sign(data=message_data, v=0)
    assert ADDRESS == recover(message_data, signature)
    # This signature will sometimes end up with v being 27, sometimes 28
    signature = signer.sign(data=message_data, v=27)
    assert ADDRESS == recover(message_data, signature)

    # test that other v values are rejected
    signature = signature[:-1] + bytes([29])
    with pytest.raises(InvalidSignature):
        recover(message_data, signature)
    signature = signature[:-1] + bytes([37])
    with pytest.raises(InvalidSignature):
        recover(message_data, signature)
    signature = signature[:-1] + bytes([38])
    with pytest.raises(InvalidSignature):
        recover(message_data, signature)
def test_encoding():
    ping = Ping(
        nonce=0,
        current_protocol_version=constants.PROTOCOL_VERSION,
        signature=constants.EMPTY_SIGNATURE,
    )
    ping.sign(signer)
    assert ping.sender == ADDRESS
示例#4
0
def test_signature():
    ping = Ping(nonce=0, current_protocol_version=0, signature=EMPTY_SIGNATURE)
    ping.sign(signer)
    assert ping.sender == ADDRESS