From 245a815267928096ea18d9d49cd395b87a7af175 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 24 Jan 2013 23:40:05 +0100 Subject: services: minimal services.txt-over-ssh provider (twisted) --- services/checkers.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 services/checkers.py (limited to 'services/checkers.py') 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 -- cgit v1.2.3