summaryrefslogtreecommitdiffstats
path: root/services/checkers.py
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2013-01-29 19:01:43 +0100
committermakefu <github@syntax-fehler.de>2013-01-29 19:01:43 +0100
commit14b5fb8d60919516950e9ac1e3ff895968ed3a3c (patch)
tree282921b51f5c780cdbe2e3f88b0f825aba901d1c /services/checkers.py
parent715b2e23b0cb347dbf6b6516e5811e45406324ac (diff)
parentd96cf23ac2c57d9791343c03d01fa54fe5295d2c (diff)
Merge branch 'master' of github.com:krebscode/painload
Diffstat (limited to 'services/checkers.py')
-rw-r--r--services/checkers.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/services/checkers.py b/services/checkers.py
new file mode 100644
index 00000000..dbfe1323
--- /dev/null
+++ b/services/checkers.py
@@ -0,0 +1,25 @@
+
+import base64, binascii
+from twisted.python.filepath import FilePath
+from twisted.conch.checkers import SSHPublicKeyDatabase
+
+
+class PublicKeyChecker(SSHPublicKeyDatabase):
+
+ def __init__(self, filename):
+ self.filepath = FilePath(filename)
+
+ def getAuthorizedKeysFiles(self, credentials):
+ return [self.filepath]
+
+ def checkKey(self, credentials):
+ for line in self.filepath.open():
+ parts = line.split()
+ if len(parts) < 2:
+ continue
+ try:
+ if base64.decodestring(parts[1]) == credentials.blob:
+ return True
+ except binascii.Error:
+ continue
+ return False