From fbea1f3480bc8f790d9202b4ce40d774bcdf36b9 Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 2 Dec 2022 19:56:13 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E6=8B=BC=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/utils/encode.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/common/utils/encode.py b/apps/common/utils/encode.py index db5aee795..b06d96a3d 100644 --- a/apps/common/utils/encode.py +++ b/apps/common/utils/encode.py @@ -7,6 +7,7 @@ import os import re import time from io import StringIO +import logging import paramiko import sshpubkeys @@ -74,13 +75,13 @@ _supported_paramiko_ssh_key_types = (paramiko.RSAKey, paramiko.DSSKey, paramiko. def ssh_key_string_to_obj(text, password=None): key = None for ssh_key_type in _supported_paramiko_ssh_key_types: - if not isinstance(ssh_key_type, paramiko.PKey): - continue try: key = ssh_key_type.from_private_key(StringIO(text), password=password) return key except paramiko.SSHException: pass + if key is None: + raise ValueError('Invalid private key') return key @@ -152,9 +153,11 @@ def parse_ssh_private_key_str(text: bytes, password=None) -> str: private_key = _parse_ssh_private_key(text, password=password) if private_key is None: return "" - private_key_bytes = private_key.private_bytes(serialization.Encoding.PEM, - serialization.PrivateFormat.OpenSSH, - serialization.NoEncryption()) + private_key_bytes = private_key.private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.OpenSSH, + serialization.NoEncryption() + ) return private_key_bytes.decode('utf-8') @@ -193,6 +196,7 @@ def _parse_ssh_private_key(text, password=None): private_key = serialization.load_ssh_private_key(text, password=password) return private_key except (ValueError, TypeError): + logging.error("Invalid private key") pass return None