From fbee8449441ed7e6fb9d1b02eae07b0764b8b2b9 Mon Sep 17 00:00:00 2001 From: dayport Date: Thu, 16 Apr 2020 16:23:55 -0700 Subject: [PATCH] Fix ssh server getKeyPair fun Correct the ssh server getKeyPair function to correctly use the cryptography module instead of the Crypto module. --- evennia/server/portal/ssh.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/evennia/server/portal/ssh.py b/evennia/server/portal/ssh.py index b2a891710f..6d7f46eb20 100644 --- a/evennia/server/portal/ssh.py +++ b/evennia/server/portal/ssh.py @@ -464,11 +464,12 @@ def getKeyPair(pubkeyfile, privkeyfile): if not (os.path.exists(pubkeyfile) and os.path.exists(privkeyfile)): # No keypair exists. Generate a new RSA keypair - from Crypto.PublicKey import RSA + from cryptography.hazmat.backends import default_backend + from cryptography.hazmat.primitives.asymmetric import rsa - rsa_key = Key(RSA.generate(_KEY_LENGTH)) - public_key_string = rsa_key.public().toString(type="OPENSSH") - private_key_string = rsa_key.toString(type="OPENSSH") + rsa_key = Key(rsa.generate_private_key(public_exponent=65537, key_size=_KEY_LENGTH, backend=default_backend())) + public_key_string = rsa_key.public().toString(type="OPENSSH").decode() + private_key_string = rsa_key.toString(type="OPENSSH").decode() # save keys for the future. with open(privkeyfile, "wt") as pfile: