[project @ Arch-1:robey@lag.net--2003-public%secsh--dev--1.0--patch-146]
raise better exception on empty key raise a clearer exception when trying to create an empty key.
This commit is contained in:
parent
c7d56a309d
commit
fb2d7bbddd
1
README
1
README
|
@ -221,4 +221,3 @@ v0.9 FEAROW
|
||||||
|
|
||||||
* ctr forms of ciphers are missing (blowfish-ctr, aes128-ctr, aes256-ctr)
|
* ctr forms of ciphers are missing (blowfish-ctr, aes128-ctr, aes256-ctr)
|
||||||
* server mode needs better documentation
|
* server mode needs better documentation
|
||||||
* the error message from this is confusing as hell: DSSKey()
|
|
||||||
|
|
|
@ -47,7 +47,9 @@ class DSSKey (PKey):
|
||||||
if vals is not None:
|
if vals is not None:
|
||||||
self.p, self.q, self.g, self.y = vals
|
self.p, self.q, self.g, self.y = vals
|
||||||
else:
|
else:
|
||||||
if (msg is None) or (msg.get_string() != 'ssh-dss'):
|
if msg is None:
|
||||||
|
raise SSHException('Key object may not be empty')
|
||||||
|
if msg.get_string() != 'ssh-dss':
|
||||||
raise SSHException('Invalid key')
|
raise SSHException('Invalid key')
|
||||||
self.p = msg.get_mpint()
|
self.p = msg.get_mpint()
|
||||||
self.q = msg.get_mpint()
|
self.q = msg.get_mpint()
|
||||||
|
|
|
@ -39,7 +39,7 @@ class RSAKey (PKey):
|
||||||
data.
|
data.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, msg=None, data='', filename=None, password=None, vals=None):
|
def __init__(self, msg=None, data=None, filename=None, password=None, vals=None):
|
||||||
if filename is not None:
|
if filename is not None:
|
||||||
self._from_private_key_file(filename, password)
|
self._from_private_key_file(filename, password)
|
||||||
return
|
return
|
||||||
|
@ -48,7 +48,9 @@ class RSAKey (PKey):
|
||||||
if vals is not None:
|
if vals is not None:
|
||||||
self.e, self.n = vals
|
self.e, self.n = vals
|
||||||
else:
|
else:
|
||||||
if (msg is None) or (msg.get_string() != 'ssh-rsa'):
|
if msg is None:
|
||||||
|
raise SSHException('Key object may not be empty')
|
||||||
|
if msg.get_string() != 'ssh-rsa':
|
||||||
raise SSHException('Invalid key')
|
raise SSHException('Invalid key')
|
||||||
self.e = msg.get_mpint()
|
self.e = msg.get_mpint()
|
||||||
self.n = msg.get_mpint()
|
self.n = msg.get_mpint()
|
||||||
|
|
|
@ -311,3 +311,37 @@ class TransportTest (unittest.TestCase):
|
||||||
self.assertEquals('communist j. cat\n', f.readline())
|
self.assertEquals('communist j. cat\n', f.readline())
|
||||||
chan.close()
|
chan.close()
|
||||||
self.assertEquals('', f.readline())
|
self.assertEquals('', f.readline())
|
||||||
|
|
||||||
|
def test_9_exit_status(self):
|
||||||
|
"""
|
||||||
|
verify that get_exit_status() works.
|
||||||
|
"""
|
||||||
|
host_key = RSAKey.from_private_key_file('tests/test_rsa.key')
|
||||||
|
public_host_key = RSAKey(data=str(host_key))
|
||||||
|
self.ts.add_server_key(host_key)
|
||||||
|
event = threading.Event()
|
||||||
|
server = NullServer()
|
||||||
|
self.assert_(not event.isSet())
|
||||||
|
self.ts.start_server(event, server)
|
||||||
|
self.tc.ultra_debug = True
|
||||||
|
self.tc.connect(hostkey=public_host_key)
|
||||||
|
self.tc.auth_password(username='slowdive', password='pygmalion')
|
||||||
|
event.wait(1.0)
|
||||||
|
self.assert_(event.isSet())
|
||||||
|
self.assert_(self.ts.is_active())
|
||||||
|
|
||||||
|
chan = self.tc.open_session()
|
||||||
|
schan = self.ts.accept(1.0)
|
||||||
|
self.assert_(chan.exec_command('yes'))
|
||||||
|
schan.send('Hello there.\n')
|
||||||
|
# trigger an EOF
|
||||||
|
schan.shutdown_read()
|
||||||
|
schan.shutdown_write()
|
||||||
|
schan.send_exit_status(23)
|
||||||
|
schan.close()
|
||||||
|
|
||||||
|
f = chan.makefile()
|
||||||
|
self.assertEquals('Hello there.\n', f.readline())
|
||||||
|
self.assertEquals('', f.readline())
|
||||||
|
self.assertEquals(23, chan.recv_exit_status())
|
||||||
|
chan.close()
|
||||||
|
|
Loading…
Reference in New Issue