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
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
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
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''