1
0

bolt-08 handshake must use ephemeral key

This commit is contained in:
SomberNight
2018-07-20 16:53:51 +02:00
committed by ThomasV
parent fca5c9379f
commit fb00e29f1c
2 changed files with 17 additions and 13 deletions

View File

@@ -280,9 +280,7 @@ class ECPubkey(object):
"""
assert_bytes(message)
randint = ecdsa.util.randrange(CURVE_ORDER)
ephemeral_exponent = number_to_string(randint, CURVE_ORDER)
ephemeral = ECPrivkey(ephemeral_exponent)
ephemeral = ECPrivkey.generate_random_key()
ecdh_key = (self * ephemeral.secret_scalar).get_public_key_bytes(compressed=True)
key = hashlib.sha512(ecdh_key).digest()
iv, key_e, key_m = key[0:16], key[16:32], key[32:]
@@ -390,6 +388,12 @@ class ECPrivkey(ECPubkey):
def __repr__(self):
return f"<ECPrivkey {self.get_public_key_hex()}>"
@classmethod
def generate_random_key(cls):
randint = ecdsa.util.randrange(CURVE_ORDER)
ephemeral_exponent = number_to_string(randint, CURVE_ORDER)
return ECPrivkey(ephemeral_exponent)
def get_secret_bytes(self) -> bytes:
return number_to_string(self.secret_scalar, CURVE_ORDER)