summaryrefslogtreecommitdiffstats
path: root/services/checkers.py
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2013-03-07 11:40:38 +0100
committermakefu <github@syntax-fehler.de>2013-03-07 11:40:38 +0100
commit7fa8fb85b072f612adb322f8a02617e1bd737020 (patch)
tree683df8268baae71451633518aa7ff7ea258a4aa8 /services/checkers.py
parentdbe2d838ba6834788265029162b2dd7d82473335 (diff)
parentef4eb3189363f5cd9a33b43693322a68d3142979 (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