예제 #1
0
def test_sign_message_against_sign_hash_as_text(keyed_acct, message_text):
    # sign via hash
    msg_hash = defunct_hash_message(text=message_text)
    with pytest.deprecated_call():
        signed_via_hash = keyed_acct.signHash(msg_hash)

    # sign via message
    signable_message = encode_defunct(text=message_text)
    signed_via_message = keyed_acct.sign_message(signable_message)
    assert signed_via_hash == signed_via_message
예제 #2
0
def test_wan_account_recover_message(acct):
    v, r, s = (
        28,
        '0xe6ca9bba58c88611fad66a6ce8f996908195593807c4b38bd528d2cff09d4eb3',
        '0x3e5bfbbf4d3e39b1a2fd816a7680c19ebebaf3a141b239934ad43cb33fcec8ce',
    )
    message_text = "I♥SF"
    message = encode_defunct(text=message_text)
    from_account = acct.recover_message(message, vrs=(v, r, s))
    assert from_account == '0x5ce9454909639D2D17A3F753ce7d93fa0b9aB12E'
예제 #3
0
def test_wan_account_sign(acct, message, key, expected_bytes, expected_hash, v,
                          r, s, signature):
    signable = encode_defunct(text=message)
    signed = acct.sign_message(signable, private_key=key)
    assert signed.messageHash == signed['messageHash'] == expected_hash
    assert signed.v == signed['v'] == v
    assert signed.r == signed['r'] == r
    assert signed.s == signed['s'] == s
    assert signed.signature == signed['signature'] == signature

    account = acct.from_key(key)
    assert account.sign_message(signable) == signed
예제 #4
0
def test_sign_message_against_sign_hash_as_hex(keyed_acct, message_bytes):
    message_hex = to_hex(message_bytes)

    # sign via hash
    msg_hash_hex = defunct_hash_message(hexstr=message_hex)
    with pytest.deprecated_call():
        signed_via_hash_hex = keyed_acct.signHash(msg_hash_hex)

    # sign via message
    signable_message_hex = encode_defunct(hexstr=message_hex)
    signed_via_message_hex = keyed_acct.sign_message(signable_message_hex)

    assert signed_via_hash_hex == signed_via_message_hex
예제 #5
0
def test_wan_account_recover_vrs(acct, raw_v, as_hex):
    # found a signature with a leading 0 byte in both r and s
    raw_r, raw_s = (
        143748089818580655331728101695676826715814583506606354117109114714663470502,
        227853308212209543997879651656855994238138056366857653269155208245074180053,
    )
    if as_hex:
        vrs = map(to_hex, (raw_v, raw_r, raw_s))
    else:
        vrs = raw_v, raw_r, raw_s

    message = encode_defunct(text='10284')
    from_account = acct.recover_message(message, vrs=vrs)
    assert from_account == '0x2c7536E3605D9C16a7a3D7b1898e529396a65c23'
예제 #6
0
def test_wan_account_recover_signature_bytes(acct, signature_bytes):
    # found a signature with a leading 0 byte in both r and s
    message = encode_defunct(text='10284')
    from_account = acct.recover_message(message, signature=signature_bytes)
    assert from_account == '0x2c7536E3605D9C16a7a3D7b1898e529396a65c23'