Ejemplo n.º 1
0
 def setUp(self):
     super(RekeyCompleteTest, self).setUp()
     self.session.send_rekey()
     rekey_msg = self.channel.sent_messages.pop(0).msg
     self.client_pubkey = rekey_msg[2:-self.mac_len]
     pkey = PrivateKey.generate()
     msg = b'\x83\x00' + pkey.public_key._public_key
     mac = self.get_mac(msg)
     response = self.get_response(msg + mac).msg
     self.new_shared_key = crypto_scalarmult(pkey._private_key, self.client_pubkey)
Ejemplo n.º 2
0
 def setUp(self):
     super(RekeyCompleteTest, self).setUp()
     self.session.send_rekey()
     rekey_msg = self.channel.sent_messages.pop(0).msg
     self.client_pubkey = rekey_msg[2:-self.mac_len]
     pkey = PrivateKey.generate()
     msg = b'\x83\x00' + pkey.public_key._public_key
     mac = self.get_mac(msg)
     response = self.get_response(msg + mac).msg
     self.new_shared_key = crypto_scalarmult(pkey._private_key,
                                             self.client_pubkey)
Ejemplo n.º 3
0
 def test_responds_to_valid_rekey_response(self):
     pkey = PrivateKey.generate()
     msg = b'\x83\x02' + pkey.public_key._public_key
     mac = self.get_mac(msg)
     response = self.get_response(msg + mac).msg
     self.assert_message_type(response, 0x04)
     self.assertEqual(len(response), 1 + self.mac_len)
     shared_key = crypto_scalarmult(pkey._private_key, self.client_pubkey)
     mac_func = getattr(hashlib, self.mac)
     expected_mac = mac_func(shared_key + response[:-self.mac_len]).digest()[:self.mac_len]
     self.assertEqual(response[-self.mac_len:], expected_mac)
     self.assertEqual(self.session.state, ClientState.wait_for_rekey_complete)
Ejemplo n.º 4
0
def test_scalarmult():
    x, xpub = secret_scalar()
    assert len(x) == 32
    y, ypub = secret_scalar()
    # the Curve25519 base point (generator)
    base = unhexlify(b"09" + b"00" * 31)

    bx1 = c.crypto_scalarmult_base(x)
    bx2 = c.crypto_scalarmult(x, base)
    assert tohex(bx1) == tohex(bx2)
    assert tohex(bx1) == tohex(xpub)

    xby = c.crypto_scalarmult(x, c.crypto_scalarmult_base(y))
    ybx = c.crypto_scalarmult(y, c.crypto_scalarmult_base(x))
    assert tohex(xby) == tohex(ybx)

    z = unhexlify(b"10" * 32)
    bz1 = c.crypto_scalarmult_base(z)
    assert tohex(bz1) == ("781faab908430150daccdd6f9d6c5086"
                          "e34f73a93ebbaa271765e5036edfc519")
    bz2 = c.crypto_scalarmult(z, base)
    assert tohex(bz1) == tohex(bz2)
Ejemplo n.º 5
0
def test_scalarmult():
    x, xpub = secret_scalar()
    assert len(x) == 32
    y, ypub = secret_scalar()
    # the Curve25519 base point (generator)
    base = unhexlify(b"09" + b"00" * 31)

    bx1 = c.crypto_scalarmult_base(x)
    bx2 = c.crypto_scalarmult(x, base)
    assert tohex(bx1) == tohex(bx2)
    assert tohex(bx1) == tohex(xpub)

    xby = c.crypto_scalarmult(x, c.crypto_scalarmult_base(y))
    ybx = c.crypto_scalarmult(y, c.crypto_scalarmult_base(x))
    assert tohex(xby) == tohex(ybx)

    z = unhexlify(b"10" * 32)
    bz1 = c.crypto_scalarmult_base(z)
    assert tohex(bz1) == ("781faab908430150daccdd6f9d6c5086"
                          "e34f73a93ebbaa271765e5036edfc519")
    bz2 = c.crypto_scalarmult(z, base)
    assert tohex(bz1) == tohex(bz2)
Ejemplo n.º 6
0
 def test_responds_to_valid_rekey_response(self):
     pkey = PrivateKey.generate()
     msg = b'\x83\x02' + pkey.public_key._public_key
     mac = self.get_mac(msg)
     response = self.get_response(msg + mac).msg
     self.assert_message_type(response, 0x04)
     self.assertEqual(len(response), 1 + self.mac_len)
     shared_key = crypto_scalarmult(pkey._private_key, self.client_pubkey)
     mac_func = getattr(hashlib, self.mac)
     expected_mac = mac_func(
         shared_key + response[:-self.mac_len]).digest()[:self.mac_len]
     self.assertEqual(response[-self.mac_len:], expected_mac)
     self.assertEqual(self.session.state,
                      ClientState.wait_for_rekey_complete)
Ejemplo n.º 7
0
    def test_rekey(self):
        pkey = PrivateKey.generate()
        msg = b'\x03\x00' + pkey.public_key._public_key
        response = self.send_with_mac(msg).msg
        self.assertEqual(len(response), 34 + self.mac_len)
        self.assert_correct_mac(response)
        self.assertEqual(six.byte2int(response[1:]), 0x00)
        self.assert_message_type(response, 0x83)
        server_pubkey = response[2:-self.mac_len]
        new_shared_secret = crypto_scalarmult(pkey._private_key, server_pubkey)

        # Send confirm
        self.session_key = new_shared_secret
        msg = b'\x04'
        response = self.send_with_mac(msg).msg
        self.assert_correct_mac(response)
        self.assert_message_type(response, 0x84)
        self.assertEqual(self.session_key, self.channel.shared_key)
Ejemplo n.º 8
0
 def derive_shared_key(self, other_party_pubkey):
     return crypto_scalarmult(self.pkey._private_key, other_party_pubkey)
Ejemplo n.º 9
0
 def derive_shared_key(self, other_party_pubkey):
     return crypto_scalarmult(self.pkey._private_key, other_party_pubkey)