diff --git a/trezor_agent/gpg/agent.py b/trezor_agent/gpg/agent.py index b4ae5a0..ff2f9e3 100644 --- a/trezor_agent/gpg/agent.py +++ b/trezor_agent/gpg/agent.py @@ -56,7 +56,7 @@ def open_connection(keygrip_bytes): curve_name=curve_name, created=pubkey_dict['created'], verifying_key=conn.pubkey(ecdh=ecdh), ecdh=ecdh) assert pubkey.key_id() == pubkey_dict['key_id'] - assert pubkey.keygrip == keygrip_bytes + assert pubkey.keygrip() == keygrip_bytes return conn diff --git a/trezor_agent/gpg/protocol.py b/trezor_agent/gpg/protocol.py index 3d4992e..f9ca4b4 100644 --- a/trezor_agent/gpg/protocol.py +++ b/trezor_agent/gpg/protocol.py @@ -185,6 +185,7 @@ class PublicKey(object): def __init__(self, curve_name, created, verifying_key, ecdh=False): """Contruct using a ECDSA VerifyingKey object.""" + self.curve_name = curve_name self.curve_info = SUPPORTED_CURVES[curve_name] self.created = int(created) # time since Epoch self.verifying_key = verifying_key @@ -196,12 +197,8 @@ class PublicKey(object): self.algo_id = self.curve_info['algo_id'] self.ecdh_packet = b'' - hex_key_id = util.hexlify(self.key_id())[-8:] - self.desc = 'GPG public key {}/{}'.format(curve_name, hex_key_id) - - @property def keygrip(self): - """Compute GPG2 keygrip.""" + """Compute GPG keygrip of the verifying key.""" return self.curve_info['keygrip'](self.verifying_key) def data(self): @@ -227,7 +224,8 @@ class PublicKey(object): def __repr__(self): """Short (8 hexadecimal digits) GPG key ID.""" - return self.desc + hex_key_id = util.hexlify(self.key_id())[-8:] + return 'GPG public key {}/{}'.format(self.curve_name, hex_key_id) __str__ = __repr__ diff --git a/trezor_agent/gpg/tests/test_protocol.py b/trezor_agent/gpg/tests/test_protocol.py index 09a3f07..2b1b303 100644 --- a/trezor_agent/gpg/tests/test_protocol.py +++ b/trezor_agent/gpg/tests/test_protocol.py @@ -70,7 +70,7 @@ def test_nist256p1(): pk = protocol.PublicKey(curve_name=formats.CURVE_NIST256, created=42, verifying_key=vk) assert repr(pk) == 'GPG public key nist256p1/F82361D9' - assert pk.keygrip == b'\x95\x85.\x91\x7f\xe2\xc3\x91R\xba\x99\x81\x92\xb5y\x1d\xb1\\\xdc\xf0' + assert pk.keygrip() == b'\x95\x85.\x91\x7f\xe2\xc3\x91R\xba\x99\x81\x92\xb5y\x1d\xb1\\\xdc\xf0' def test_nist256p1_ecdh(): @@ -79,7 +79,7 @@ def test_nist256p1_ecdh(): pk = protocol.PublicKey(curve_name=formats.CURVE_NIST256, created=42, verifying_key=vk, ecdh=True) assert repr(pk) == 'GPG public key nist256p1/5811DF46' - assert pk.keygrip == b'\x95\x85.\x91\x7f\xe2\xc3\x91R\xba\x99\x81\x92\xb5y\x1d\xb1\\\xdc\xf0' + assert pk.keygrip() == b'\x95\x85.\x91\x7f\xe2\xc3\x91R\xba\x99\x81\x92\xb5y\x1d\xb1\\\xdc\xf0' def test_ed25519(): @@ -88,7 +88,7 @@ def test_ed25519(): pk = protocol.PublicKey(curve_name=formats.CURVE_ED25519, created=42, verifying_key=vk) assert repr(pk) == 'GPG public key ed25519/36B40FE6' - assert pk.keygrip == b'\xbf\x01\x90l\x17\xb64\xa3-\xf4\xc0gr\x99\x18<\xddBQ?' + assert pk.keygrip() == b'\xbf\x01\x90l\x17\xb64\xa3-\xf4\xc0gr\x99\x18<\xddBQ?' def test_curve25519(): @@ -97,7 +97,7 @@ def test_curve25519(): pk = protocol.PublicKey(curve_name=formats.ECDH_CURVE25519, created=42, verifying_key=vk) assert repr(pk) == 'GPG public key curve25519/69460384' - assert pk.keygrip == b'x\xd6\x86\xe4\xa6\xfc;\x0fY\xe1}Lw\xc4\x9ed\xf1Q\x8a\x00' + assert pk.keygrip() == b'x\xd6\x86\xe4\xa6\xfc;\x0fY\xe1}Lw\xc4\x9ed\xf1Q\x8a\x00' def test_get_curve_name_by_oid():