summaryrefslogtreecommitdiff
path: root/paramiko/dsskey.py
diff options
context:
space:
mode:
authorRobey Pointer <robey@lag.net>2006-06-26 23:41:06 -0700
committerRobey Pointer <robey@lag.net>2006-06-26 23:41:06 -0700
commit4fa4fdee4b85a74be63cb016955169eaac48daeb (patch)
tree758d10d3c2086880423b77e791e39143da1a09ca /paramiko/dsskey.py
parentd81758f1ff7da3320802d48853c3df938e8309e0 (diff)
downloadparamiko-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.py25
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: