diff options
-rw-r--r-- | paramiko/rsakey.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/paramiko/rsakey.py b/paramiko/rsakey.py index d2dc99e4..1e2d5bfe 100644 --- a/paramiko/rsakey.py +++ b/paramiko/rsakey.py @@ -141,9 +141,16 @@ class RSAKey(PKey): if isinstance(key, rsa.RSAPrivateKey): key = key.public_key() + # NOTE: pad received signature with leading zeros, key.verify() + # expects a signature of key size (e.g. PuTTY doesn't pad) + sign = msg.get_binary() + diff = key.key_size - len(sign) * 8 + if diff > 0: + sign = b"\x00" * ((diff + 7) // 8) + sign + try: key.verify( - msg.get_binary(), + sign, data, padding.PKCS1v15(), self.HASHES[sig_algorithm](), |