Exemplo n.º 1
0
def test_session():
    initiator = RLPxSession(ECCx(raw_privkey=mk_privkey('secret1')),
                            is_initiator=True)
    initiator_pubk = initiator.ecc.raw_pubkey
    responder = RLPxSession(ECCx(raw_privkey=mk_privkey('secret2')))
    responder_pubk = responder.ecc.raw_pubkey

    auth_msg = initiator.create_auth_message(remote_pubkey=responder_pubk)
    auth_msg_ct = initiator.encrypt_auth_message(auth_msg, responder_pubk)

    responder.decode_authentication(auth_msg_ct)
    auth_ack_msg = responder.create_auth_ack_message()
    auth_ack_msg_ct = responder.encrypt_auth_ack_message(
        auth_ack_msg, initiator_pubk)

    initiator.decode_auth_ack_message(auth_ack_msg_ct)

    initiator.setup_cipher()
    responder.setup_cipher()

    assert responder.ecdhe_shared_secret == initiator.ecdhe_shared_secret
    assert responder.token == initiator.token
    assert responder.aes_secret == initiator.aes_secret
    assert responder.mac_secret == initiator.mac_secret

    assert responder.egress_mac.digest() == initiator.ingress_mac.digest()
    assert responder.egress_mac.digest() == initiator.ingress_mac.digest()
    assert responder.ingress_mac.digest() == initiator.egress_mac.digest()
    assert responder.ingress_mac.digest() == initiator.egress_mac.digest()
    assert responder.mac_secret == initiator.mac_secret

    return initiator, responder
Exemplo n.º 2
0
def test_session():
    initiator = RLPxSession(ECCx(raw_privkey=mk_privkey('secret1')), is_initiator=True)
    initiator_pubk = initiator.ecc.raw_pubkey
    responder = RLPxSession(ECCx(raw_privkey=mk_privkey('secret2')))
    responder_pubk = responder.ecc.raw_pubkey

    auth_msg = initiator.create_auth_message(remote_pubkey=responder_pubk)
    auth_msg_ct = initiator.encrypt_auth_message(auth_msg, responder_pubk)

    responder.decode_authentication(auth_msg_ct)
    auth_ack_msg = responder.create_auth_ack_message()
    auth_ack_msg_ct = responder.encrypt_auth_ack_message(auth_ack_msg, initiator_pubk)

    initiator.decode_auth_ack_message(auth_ack_msg_ct)

    initiator.setup_cipher()
    responder.setup_cipher()

    assert responder.ecdhe_shared_secret == initiator.ecdhe_shared_secret
    assert responder.token == initiator.token
    assert responder.aes_secret == initiator.aes_secret
    assert responder.mac_secret == initiator.mac_secret

    assert responder.egress_mac.digest() == initiator.ingress_mac.digest()
    assert responder.egress_mac.digest() == initiator.ingress_mac.digest()
    assert responder.ingress_mac.digest() == initiator.egress_mac.digest()
    assert responder.ingress_mac.digest() == initiator.egress_mac.digest()
    assert responder.mac_secret == initiator.mac_secret

    return initiator, responder
Exemplo n.º 3
0
def test_auth_ack_is_eip8_for_eip8_auth():
    responder = RLPxSession(ECCx(raw_privkey=eip8_values['key_b']))
    responder.decode_authentication(eip8_handshakes[1]['auth'])
    assert responder.got_eip8_auth

    ack = responder.create_auth_ack_message(version=55)
    ack_ct = responder.encrypt_auth_ack_message(ack)

    initiator = RLPxSession(ECCx(raw_privkey=eip8_values['key_a']),
                            is_initiator=True)
    initiator.decode_auth_ack_message(ack_ct)
    assert initiator.got_eip8_ack
    assert initiator.remote_version == 55
Exemplo n.º 4
0
def test_eip8_handshake_messages():
    initiator = RLPxSession(ECCx(raw_privkey=eip8_values['key_a']),
                            is_initiator=True)
    responder = RLPxSession(ECCx(raw_privkey=eip8_values['key_b']))
    for handshake in eip8_handshakes:
        ack_rest = initiator.decode_auth_ack_message(handshake['ack'])
        assert initiator.remote_ephemeral_pubkey == eip8_values['eph_pub_b']
        assert initiator.responder_nonce == eip8_values['nonce_b']
        assert initiator.got_eip8_ack == handshake['eip8_format']
        assert initiator.remote_version == handshake['ack_version']
        assert ack_rest == b''

        auth_rest = responder.decode_authentication(handshake['auth'])
        assert responder.remote_ephemeral_pubkey == eip8_values['eph_pub_a']
        assert responder.initiator_nonce == eip8_values['nonce_a']
        assert responder.remote_pubkey == eip8_values['pub_a']
        assert responder.got_eip8_auth == handshake['eip8_format']
        assert auth_rest == b''