mirror of
https://github.com/romanz/amodem.git
synced 2026-03-31 08:06:50 +08:00
gpg: add SLIP-0017 support for ECDH session key generation
This commit is contained in:
@@ -19,9 +19,9 @@ class HardwareSigner(object):
|
||||
self.identity.host = user_id
|
||||
self.curve_name = curve_name
|
||||
|
||||
def pubkey(self):
|
||||
def pubkey(self, ecdh=False):
|
||||
"""Return public key as VerifyingKey object."""
|
||||
addr = client.get_address(self.identity)
|
||||
addr = client.get_address(identity=self.identity, ecdh=ecdh)
|
||||
public_node = self.client_wrapper.connection.get_public_node(
|
||||
n=addr, ecdsa_curve_name=self.curve_name)
|
||||
|
||||
@@ -42,14 +42,13 @@ class HardwareSigner(object):
|
||||
|
||||
def ecdh(self, pubkey):
|
||||
"""Derive shared secret using ECDH from remote public key."""
|
||||
result = self.client_wrapper.connection.sign_identity(
|
||||
result = self.client_wrapper.connection.get_ecdh_session_key(
|
||||
identity=self.identity,
|
||||
challenge_hidden=pubkey,
|
||||
challenge_visual=b'',
|
||||
peer_public_key=pubkey,
|
||||
ecdsa_curve_name=self.curve_name)
|
||||
assert len(result.signature) == 65
|
||||
assert result.signature[:1] == b'\x04'
|
||||
return result.signature
|
||||
assert len(result.session_key) == 65
|
||||
assert result.session_key[:1] == b'\x04'
|
||||
return result.session_key
|
||||
|
||||
def close(self):
|
||||
"""Close the connection to the device."""
|
||||
|
||||
Reference in New Issue
Block a user