# HG changeset patch # User Mads Kiilerich # Date 1601295041 -7200 # Node ID c3ae916ef55f6e386757133d1149e0e487efccca # Parent 0e33f4ec06170fd7a7427041dba099b4a1efee19 ssh: support ssh-ed448 keys https://tools.ietf.org/html/rfc8709 defines both "ssh-ed25519" and "ssh-ed448" - let's keep it simple and feature complete and support both types. diff -r 0e33f4ec0617 -r c3ae916ef55f kallithea/lib/ssh.py --- a/kallithea/lib/ssh.py Mon Sep 28 14:17:10 2020 +0200 +++ b/kallithea/lib/ssh.py Mon Sep 28 14:10:41 2020 +0200 @@ -52,7 +52,7 @@ >>> parse_pub_key('''abc AAAAB3NzaC1yc2EAAAALVGhpcyBpcyBmYWtlIQ''') Traceback (most recent call last): ... - kallithea.lib.ssh.SshKeyParseError: Invalid SSH key - it must start with key type 'ssh-rsa', 'ssh-dss', or 'ssh-ed25519' + kallithea.lib.ssh.SshKeyParseError: Invalid SSH key - it must start with key type 'ssh-rsa', 'ssh-dss', 'ssh-ed448', or 'ssh-ed25519' >>> parse_pub_key('''ssh-rsa AAAAB3NzaC1yc2EAAAALVGhpcyBpcyBmYWtlIQ''') Traceback (most recent call last): ... @@ -91,8 +91,8 @@ raise SshKeyParseError(_("Invalid SSH key - it must have both a key type and a base64 part, like 'ssh-rsa ASRNeaZu4FA...xlJp='")) keytype, keyvalue, comment = (parts + [''])[:3] - if keytype not in ('ssh-rsa', 'ssh-dss', 'ssh-ed25519'): - raise SshKeyParseError(_("Invalid SSH key - it must start with key type 'ssh-rsa', 'ssh-dss', or 'ssh-ed25519'")) + if keytype not in ('ssh-rsa', 'ssh-dss', 'ssh-ed448', 'ssh-ed25519'): + raise SshKeyParseError(_("Invalid SSH key - it must start with key type 'ssh-rsa', 'ssh-dss', 'ssh-ed448', or 'ssh-ed25519'")) if re.search(r'[^a-zA-Z0-9+/=]', keyvalue): # make sure b64decode doesn't stop at the first invalid character and skip the rest raise SshKeyParseError(_("Invalid SSH key - unexpected characters in base64 part %r") % keyvalue)