diff options
author | Robey Pointer <robey@lag.net> | 2006-06-26 23:41:06 -0700 |
---|---|---|
committer | Robey Pointer <robey@lag.net> | 2006-06-26 23:41:06 -0700 |
commit | 4fa4fdee4b85a74be63cb016955169eaac48daeb (patch) | |
tree | 758d10d3c2086880423b77e791e39143da1a09ca /paramiko/dsskey.py | |
parent | d81758f1ff7da3320802d48853c3df938e8309e0 (diff) | |
download | paramiko-4fa4fdee4b85a74be63cb016955169eaac48daeb.tar.gz |
[project @ robey@lag.net-20060627064106-71a2bfb5a39a2913]
add PKey.from_private_key to read from a file object
Diffstat (limited to 'paramiko/dsskey.py')
-rw-r--r-- | paramiko/dsskey.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/paramiko/dsskey.py b/paramiko/dsskey.py index a004597f..2677e4a7 100644 --- a/paramiko/dsskey.py +++ b/paramiko/dsskey.py @@ -36,14 +36,16 @@ class DSSKey (PKey): Representation of a DSS key which can be used to sign an verify SSH2 data. """ - - p = None - q = None - g = None - y = None - x = None - def __init__(self, msg=None, data=None, filename=None, password=None, vals=None): + def __init__(self, msg=None, data=None, filename=None, password=None, vals=None, file_obj=None): + self.p = None + self.q = None + self.g = None + self.y = None + self.x = None + if file_obj is not None: + self._from_private_key(file_obj, password) + return if filename is not None: self._from_private_key_file(filename, password) return @@ -171,9 +173,16 @@ class DSSKey (PKey): def _from_private_key_file(self, filename, password): + data = self._read_private_key_file('DSA', filename, password) + self._decode_key(data) + + def _from_private_key(self, file_obj, password): + data = self._read_private_key('DSA', file_obj, password) + self._decode_key(data) + + def _decode_key(self, data): # private key file contains: # DSAPrivateKey = { version = 0, p, q, g, y, x } - data = self._read_private_key_file('DSA', filename, password) try: keylist = BER(data).decode() except BERException, x: |