From 517685caaed0326c37d5de1a24ac257ddd296833 Mon Sep 17 00:00:00 2001 From: Pierce Lopez Date: Tue, 13 Jun 2017 13:35:59 -0400 Subject: need bcrypt >= 3.1.3 for kdf() ignore_few_rounds kwarg --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 77db95ac..1038fb68 100644 --- a/setup.py +++ b/setup.py @@ -75,7 +75,7 @@ setup( 'Programming Language :: Python :: 3.6', ], install_requires=[ - 'bcrypt>=3.0.0', + 'bcrypt>=3.1.3', 'cryptography>=1.1', 'pynacl>=1.0.1', 'pyasn1>=0.1.7', -- cgit v1.2.1 From 1d8bb422bf8cf79b8a148e48c4c9b57966a43542 Mon Sep 17 00:00:00 2001 From: Pierce Lopez Date: Tue, 13 Jun 2017 13:37:14 -0400 Subject: implement __hash__() method for Ed25519Key makes Ed25519Key objs comparable, needed for host keys --- paramiko/ed25519key.py | 7 +++++++ tests/test_pkey.py | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/paramiko/ed25519key.py b/paramiko/ed25519key.py index e1a8a732..a50d68bc 100644 --- a/paramiko/ed25519key.py +++ b/paramiko/ed25519key.py @@ -167,6 +167,13 @@ class Ed25519Key(PKey): m.add_string(v.encode()) return m.asbytes() + def __hash__(self): + if self.can_sign(): + v = self._signing_key.verify_key + else: + v = self._verifying_key + return hash((self.get_name(), v)) + def get_name(self): return "ssh-ed25519" diff --git a/tests/test_pkey.py b/tests/test_pkey.py index 6e589915..e614c777 100644 --- a/tests/test_pkey.py +++ b/tests/test_pkey.py @@ -455,9 +455,18 @@ class KeyTest(unittest.TestCase): key2 = Ed25519Key.from_private_key_file( test_path('test_ed25519_password.key'), b'abc123' ) - self.assertNotEqual(key1.asbytes(), key2.asbytes()) + def test_ed25519_compare(self): + # verify that the private & public keys compare equal + key = Ed25519Key.from_private_key_file(test_path('test_ed25519.key')) + self.assertEqual(key, key) + pub = Ed25519Key(data=key.asbytes()) + self.assertTrue(key.can_sign()) + self.assertTrue(not pub.can_sign()) + self.assertEqual(key, pub) + + def test_keyfile_is_actually_encrypted(self): # Read an existing encrypted private key file_ = test_path('test_rsa_password.key') -- cgit v1.2.1 From 556fff1b7b1997e798279893603b6ce683b87d81 Mon Sep 17 00:00:00 2001 From: Pierce Lopez Date: Tue, 13 Jun 2017 15:37:12 -0400 Subject: changelog: update for #990 and #993 --- sites/www/changelog.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst index 3c6aa609..aa370bae 100644 --- a/sites/www/changelog.rst +++ b/sites/www/changelog.rst @@ -2,6 +2,11 @@ Changelog ========= +* :bug:`993` ssh-ed25519 host keys were not comparable, causing an + exception if such a key existed in ``known_hosts``. Thanks Oleh Prypin + for the report and Pierce Lopez for the fix. +* :bug:`990` The bcrypt dependency should have been on version 3.1.3 or + greater. Thanks Paul Howarth for the report. * :release:`2.2.0 <2017-06-09>` * :release:`2.1.3 <2017-06-09>` * :release:`2.0.6 <2017-06-09>` -- cgit v1.2.1 From 6db347afabd4b95bee214512ad27796ac5c2e84a Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Tue, 13 Jun 2017 12:58:58 -0700 Subject: Changelog language tweaks --- sites/www/changelog.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst index aa370bae..bed4fd7f 100644 --- a/sites/www/changelog.rst +++ b/sites/www/changelog.rst @@ -2,11 +2,12 @@ Changelog ========= -* :bug:`993` ssh-ed25519 host keys were not comparable, causing an - exception if such a key existed in ``known_hosts``. Thanks Oleh Prypin - for the report and Pierce Lopez for the fix. -* :bug:`990` The bcrypt dependency should have been on version 3.1.3 or - greater. Thanks Paul Howarth for the report. +* :bug:`993` Ed25519 host keys were not comparable/hashable, causing an + exception if such a key existed in a ``known_hosts`` file. Thanks to Oleh + Prypin for the report and Pierce Lopez for the fix. +* :bug:`990` The (added in 2.2.0) ``bcrypt`` dependency should have been on + version 3.1.3 or greater (was initially set to 3.0.0 or greater.) Thanks to + Paul Howarth for the report. * :release:`2.2.0 <2017-06-09>` * :release:`2.1.3 <2017-06-09>` * :release:`2.0.6 <2017-06-09>` -- cgit v1.2.1 From 47f904837f72bb6a5355e139854a17f5875f8928 Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Tue, 13 Jun 2017 12:59:32 -0700 Subject: Whitespace --- tests/test_pkey.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_pkey.py b/tests/test_pkey.py index e614c777..9bb3c44c 100644 --- a/tests/test_pkey.py +++ b/tests/test_pkey.py @@ -466,7 +466,6 @@ class KeyTest(unittest.TestCase): self.assertTrue(not pub.can_sign()) self.assertEqual(key, pub) - def test_keyfile_is_actually_encrypted(self): # Read an existing encrypted private key file_ = test_path('test_rsa_password.key') -- cgit v1.2.1